最新的Web開發教程
 

PHP連接到MySQL


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;