PHP5及以上版本建議使用以下方式連接MySQL數據庫:
- MySQLi extension這里的i意為improved
- PDO全稱PHP Data Objects
在PHP早期版本中我們使用MySQL擴展,但該擴展在2012年開始不建議使用。
我該用MySQLi,還是PDO呢
如果你需要一個簡短的回答,那就“習慣哪個就用哪個”
MySQLi和PDO有它們自己優勢:PDO應用在12種不同數據庫中,MySQLi只針對MySQL數據庫。
所以,如果你的項目需在多種數據庫中切換,建議用PDO,這樣你只需要修改連接字符串和部分查詢語句即可。如使用MySQLi,不同的數據庫,需要重新編寫所有代碼,包括查詢。
兩者都是面向對象,但MySQLi提供了API接口。
兩者都支持預處理語句。預處理語句可以防止SQL注入,對于web項目安全性是非常重要的。
MySQLi和PDO連接MySQL實例
我們用以下三種方式來演示PHP操作MySQL:
- MySQLi面向對象的方式
- MySQLi面向過程的方式
- PDO的方式
MySQLi面向對象的方式:
$servername = "localhost";
$username = "username";
$password = "password";
$conn = new mysqli($servername, $username, $password);
if ($conn->connect_error) {
die("連接失敗: " . $conn->connect_error);
}
echo "連接成功";
?>
注意在上面向對象的實例中$connect_error是在PHP5.2.9和5.3.0中添加的。如果你需要兼容更早版本請使用以下代碼替換:
- if (mysqli_connect_error()) {
- die("MySQL數據庫連接失敗: " . mysqli_connect_error());
- }
MySQLi面向過程的方式:
$servername = "localhost";
$username = "username";
$password = "password";
$conn = mysqli_connect($servername, $username, $password);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "連接成功";
?>
PDO的方式:
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;", $username, $password);
echo "連接成功";
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>
注意在以上PDO實例中我們已經指定了數據庫myDB。PDO在連接過程需要設置數據庫名。如果沒有指定,則會拋出異常。
關閉連接
MySQLi面向對象的方式:
$conn->close();
MySQLi面向過程的方式:
mysqli_close($conn);
PDO的方式:
$conn = null;