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 参数指定主机名(例如 localhost
)或 MySQL 服务器的 IP 地址,而 username 和 password 参数指定访问 MySQL 服务器的凭据,数据库参数(如果提供)将指定默认的 MySQL 数据库在执行查询时使用。
以下示例显示如何使用 MySQLi(过程和 面向对象的方式)和 PDO 扩展连接到 MySQL 数据库服务器。
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Print host information
echo "Connect Successfully. Host info: " . mysqli_get_host_info($link);
?>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "demo");
// Check connection
if($mysqli === false){
die("ERROR: Could not connect. " . $mysqli->connect_error);
}
// Print host information
echo "Connect Successfully. Host info: " . $mysqli->host_info;
?>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
try{
$pdo = new PDO("mysql:host=localhost", "root", "");
// Set the PDO error mode to exception
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Print host information
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()
函数即可。
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Print host information
echo "Connect Successfully. Host info: " . mysqli_get_host_info($link);
// Close connection
mysqli_close($link);
?>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "demo");
// Check connection
if($mysqli === false){
die("ERROR: Could not connect. " . $mysqli->connect_error);
}
// Print host information
echo "Connect Successfully. Host info: " . $mysqli->host_info;
// Close connection
$mysqli->close();
?>
<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
try{
$pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
// Set the PDO error mode to exception
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Print host information
echo "Connect Successfully. Host info: " .
$pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));
} catch(PDOException $e){
die("ERROR: Could not connect. " . $e->getMessage());
}
// Close connection
unset($pdo);
?>