技術文章
PHP連接MySQL
發(fā)布日期:2019-11-23 閱讀次數(shù):3365 字體大小:

PHP5及以上版本建議使用以下方式連接MySQL數(shù)據(jù)庫:

  • MySQLi extension這里的i意為improved
  • PDO全稱PHP Data Objects

在PHP早期版本中我們使用MySQL擴展,但該擴展在2012年開始不建議使用。

我該用MySQLi,還是PDO呢

如果你需要一個簡短的回答,那就“習慣哪個就用哪個”

MySQLi和PDO有它們自己優(yōu)勢:PDO應用在12種不同數(shù)據(jù)庫中,MySQLi只針對MySQL數(shù)據(jù)庫。

所以,如果你的項目需在多種數(shù)據(jù)庫中切換,建議用PDO,這樣你只需要修改連接字符串和部分查詢語句即可。如使用MySQLi,不同的數(shù)據(jù)庫,需要重新編寫所有代碼,包括查詢。

兩者都是面向對象,但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中添加的。如果你需要兼容更早版本請使用以下代碼替換:

  1.  
  2. if (mysqli_connect_error()) {
  3.     die("MySQL數(shù)據(jù)庫連接失敗: " . mysqli_connect_error());
  4. }

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實例中我們已經(jīng)指定了數(shù)據(jù)庫myDB。PDO在連接過程需要設置數(shù)據(jù)庫名。如果沒有指定,則會拋出異常。

關閉連接

MySQLi面向對象的方式:

$conn->close();

MySQLi面向過程的方式:

mysqli_close($conn);

PDO的方式:

$conn = null;