PHP 5及更高版本可以與MySQL數據庫使用的工作:
- MySQLi擴展 (the "i" stands for improved)
- PDO (PHP Data Objects)
較早版本的PHP中使用MySQL擴展。 然而,這個擴展在2012年已被否決。
我使用mysqli或PDO?
如果你需要一個簡單的答案,這將是"Whatever you like" 。
這兩個庫MySQLi和PDO有自己的優勢:
PDO將在12個不同的數據庫系統,那裡的MySQLi的將只與MySQL數據庫攜手。
所以,如果你要切換項目中使用其他數據庫,PDO使得過程變得輕鬆。 你只需要更改連接字符串和幾個疑問。 隨著庫MySQLi,你需要重寫整個代碼 - 查詢包括在內。
兩者都是面向對象的,但庫MySQLi還提供了一個程序的API。
兩者都支持預處理語句。 準備語句SQL注入保護,並且是Web應用程序的安全性非常重要。
在這兩個庫MySQLi和PDO語法的MySQL實例
在這一點,並在下面的章節中,我們演示使用PHP和MySQL的工作方式有三種:
- 庫MySQLi (object-oriented)
- 庫MySQLi (procedural)
- PDO
庫MySQLi安裝
對於Linux和Windows:mysqli擴展是自動安裝在大多數情況下,安裝PHP5 mysql軟件包時。
對於安裝的詳細信息,請訪問: http://php.net/manual/en/mysqli.installation.php
PDO安裝
對於安裝的詳細信息,請訪問: http://php.net/manual/en/pdo.installation.php
打開一個連接到MySQL
之前,我們可以在MySQL數據庫中訪問數據,我們需要能夠連接到服務器:
實施例(MySQLi Object-Oriented)
<?php
$servername = "localhost";
$username = "username";
$password =
"password";
// Create connection
$conn =
new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
注意上面的面向對象的例子:$ connect_error被打破,直到5.2.9 PHP 5.3.0和。 如果您需要事先以確保5.2.9和5.3.0的PHP版本的兼容性,使用下面的代碼來代替:
//檢查連接
如果( mysqli_connect_error() ){
die("Database connection failed: " . mysqli_connect_error() );
}
實施例(MySQLi Procedural)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername,
$username, $password);
// Check connection
if (!$conn) {
die("Connection
failed: " . mysqli_connect_error());
}
echo "Connected
successfully";
?>
實施例(PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB",
$username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE,
PDO::ERRMODE_EXCEPTION);
echo "Connected
successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
請注意,在PDO上面的例子,我們還指定了一個數據庫(myDB) PDO需要一個有效的數據庫連接。 如果沒有指定數據庫,則拋出異常。
提示:PDO的一大好處是,它有一個異常類來處理我們的數據庫查詢可能出現的任何問題。 如果異常是在try {}塊中拋出,腳本停止執行並直接流到第一catch() {}塊。
關閉連接
腳本結束時的連接將被自動關閉。 之前關閉連接,使用以下命令:
實施例(MySQLi Object-Oriented)
$conn->close();
實施例(MySQLi Procedural)
mysqli_close($conn);
實施例(PDO)
$conn = null;