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 地址,而 usernamepassword 引數指定訪問 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);
?>