PHP 基础教程
PHP 高级教程
PHP & MySQL DATABASE
PHP 示例
PHP 参考手册

PHP 连接MySQL服务器

在本教程中,您将学习如何使用 PHP 连接到 MySQL 服务器。

通过 PHP 连接 MySQL 的方式

为了在 MySQL 数据库中存储或访问数据,您首先需要连接到 MySQL 数据库服务器。 PHP 提供了两种不同的方式连接到 MySQL 服务器:MySQLi(改进的 MySQL)和 PDO(PHP 数据对象)扩展。

虽然 PDO 扩展更便携并且支持超过 12 个不同的数据库,但 MySQLi 扩展顾名思义只支持 MySQL 数据库。 然而,MySQLi 扩展提供了一种更简单的方法来连接到 MySQL 数据库服务器并在其上执行查询。 PDO 和 MySQLi 都提供了面向对象的 API,但 MySQLi 还提供了一个对初学者来说相对容易理解的过程 API。

提示: PHP 的 MySQLi 扩展提供了优于 PDO 扩展的速度和功能优势,因此它可能是 MySQL 特定项目的更好选择。


连接 MySQL 数据库服务器

在 PHP 中,您可以使用 mysqli_connect() 函数轻松完成此操作。 PHP 和 MySQL 数据库服务器之间的所有通信都是通过此连接进行的。 以下是使用 MySQLi 和 PDO 扩展连接到 MySQL 的基本语法:

语法:MySQLi,程序方式

$link = mysqli_connect("hostname", "username", "password", "database");

语法:MySQLi,面向对象的方式

$mysqli = new mysqli("hostname", "username", "password", "database");

语法:PHP 数据对象 (PDO) 方式

$pdo = new PDO("mysql:host=hostname;dbname=database", "username", "password");

上述语法中的 hostname 参数指定 MySQL 服务器的主机名(例如 localhost)或 IP 地址,而 usernamepassword 参数指定访问 MySQL 服务器的凭据,以及 database 参数(如果提供) 将指定执行查询时要使用的默认 MySQL 数据库。

以下示例展示了如何使用 MySQLi(procedural面向对象 方式)和 PDO 扩展连接到 MySQL 数据库服务器。

示例

Procedural Object Oriented PDO
Download
<?php
/* 尝试 MySQL 服务器连接。 假设您正在运行 MySQL
具有默认设置的服务器(用户 'root' 没有密码) */
$link = mysqli_connect("localhost", "root", "");
 
// 检查连接
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// 打印主机信息
echo "Connect Successfully. Host info: " . mysqli_get_host_info($link);
?>
<?php
/* 尝试 MySQL 服务器连接。 假设您正在运行 MySQL
具有默认设置的服务器(用户 'root' 没有密码) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// 检查连接
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
// 打印主机信息
echo "Connect Successfully. Host info: " . $mysqli->host_info;
?>
<?php
/* 尝试 MySQL 服务器连接。 假设您正在运行 MySQL
具有默认设置的服务器(用户 'root' 没有密码) */
try{
    $pdo = new PDO("mysql:host=localhost", "root", "");
    
    // 将 PDO 错误模式设置为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // 打印主机信息
    echo "Connect Successfully. Host info: " . 
$pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
?>

注意: MySQL 数据库服务器的默认用户名是 root,并且没有密码。 但是,为了防止您的数据库被入侵和未经授权的访问,您应该为 MySQL 帐户设置密码。

提示:PDO::ATTR_ERRMODE 属性设置为 PDO::ERRMODE_EXCEPTION 会告诉 PDO 在发生数据库错误时抛出异常。


关闭 MySQL 数据库服务器连接

脚本执行结束后,与 MySQL 数据库服务器的连接将自动关闭。 但是,如果您想提前关闭它,只需调用 PHP mysqli_close() 函数即可。

示例

Procedural Object Oriented PDO
Download
<?php
/* 尝试 MySQL 服务器连接。 假设您正在运行 MySQL
具有默认设置的服务器(用户 'root' 没有密码) */
$link = mysqli_connect("localhost", "root", "");
 
// 检查连接
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// 打印主机信息
echo "Connect Successfully. Host info: " . mysqli_get_host_info($link);
 
// 关闭连接
mysqli_close($link);
?>
<?php
/* 尝试 MySQL 服务器连接。 假设您正在运行 MySQL
具有默认设置的服务器(用户 'root' 没有密码) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// 检查连接
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
// 打印主机信息
echo "Connect Successfully. Host info: " . $mysqli->host_info;
 
// 关闭连接
$mysqli->close();
?>
<?php
/* 尝试 MySQL 服务器连接。 假设您正在运行 MySQL
具有默认设置的服务器(用户 'root' 没有密码) */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    
    // 将 PDO 错误模式设置为异常
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // 打印主机信息
    echo "Connect Successfully. Host info: " . 
$pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
 
// 关闭连接
unset($pdo);
?>
Advertisements