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

确保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(数据源名称),示例代码:

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参数或检查用户权限解决,连接使用后应关闭以释放资源:

mysqli_close($conn); $conn = null; // PDO关闭连接
以下是连接参数配置表: | 参数 | 说明 | 示例值 | |------|------|--------| | host | 服务器地址 | localhost | | username | 数据库用户名 | root | | password | 数据库密码 | 123456 | | database | 数据库名 | test | | port | 端口号 | 3306 |
相关问答FAQs
-
Q:PHP连接MySQL时出现“Access denied”错误怎么办?
A:此错误通常由用户名或密码错误导致,需检查MySQL用户权限,可通过GRANT ALL PRIVILEGES ON database.* TO 'username'@'localhost';命令授权,并确保密码正确。 -
Q:如何解决PHP连接MySQL超时问题?
A:可通过修改MySQL配置文件(my.cnf)中的wait_timeout和interactive_timeout参数延长超时时间,或在PHP中使用mysqli_options()设置连接超时时间(如mysqli_options($conn, MYSQLI_OPT_CONNECT_TIMEOUT, 10))。
