凌峰创科服务平台

PHP如何连接MySQL服务器?

PHP连接MySQL服务器是Web开发中常见的操作,主要通过MySQLi或PDO扩展实现,以下是详细步骤和注意事项:

PHP如何连接MySQL服务器?-图1
(图片来源网络,侵删)

确保PHP和MySQL已正确安装并运行,在Windows系统中,可通过phpinfo()函数检查PHP是否加载了MySQLi或PDO扩展;在Linux系统中,需确保php-mysql或php-mysqlnd包已安装,连接前需获取MySQL服务器的地址(如localhost)、用户名、密码及数据库名称。

使用MySQLi扩展连接MySQL有两种方式:面向过程和面向对象,面向过程方式示例代码如下:

$conn = mysqli_connect("localhost", "username", "password", "database");
if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}
echo "连接成功";

面向对象方式则使用类方法:

$conn = new mysqli("localhost", "username", "password", "database");
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "连接成功";

PDO扩展支持多种数据库,连接时需指定DSN(数据源名称),示例代码:

PHP如何连接MySQL服务器?-图2
(图片来源网络,侵删)
try {
    $conn = new PDO("mysql:host=localhost;dbname=database", "username", "password");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "连接成功";
} catch(PDOException $e) {
    echo "连接失败: " . $e->getMessage();
}

连接后,可执行SQL语句,MySQLi中使用query()方法:

$result = $conn->query("SELECT * FROM users");
while($row = $result->fetch_assoc()) {
    print_r($row);
}

PDO中需使用prepare()和execute()方法:

$stmt = $conn->prepare("SELECT * FROM users");
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach($stmt->fetchAll() as $row) {
    print_r($row);
}

连接安全性至关重要,建议使用预处理语句防止SQL注入,避免直接拼接SQL字符串。

$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);
$stmt->execute();

常见错误包括连接超时、认证失败或权限不足,可通过调整max_connections参数或检查用户权限解决,连接使用后应关闭以释放资源:

PHP如何连接MySQL服务器?-图3
(图片来源网络,侵删)
mysqli_close($conn);
$conn = null; // PDO关闭连接

以下是连接参数配置表: | 参数 | 说明 | 示例值 | |------|------|--------| | host | 服务器地址 | localhost | | username | 数据库用户名 | root | | password | 数据库密码 | 123456 | | database | 数据库名 | test | | port | 端口号 | 3306 |

相关问答FAQs

  1. Q:PHP连接MySQL时出现“Access denied”错误怎么办?
    A:此错误通常由用户名或密码错误导致,需检查MySQL用户权限,可通过GRANT ALL PRIVILEGES ON database.* TO 'username'@'localhost';命令授权,并确保密码正确。

  2. Q:如何解决PHP连接MySQL超时问题?
    A:可通过修改MySQL配置文件(my.cnf)中的wait_timeoutinteractive_timeout参数延长超时时间,或在PHP中使用mysqli_options()设置连接超时时间(如mysqli_options($conn, MYSQLI_OPT_CONNECT_TIMEOUT, 10))。

分享:
扫描分享到社交APP
上一篇
下一篇