技術(shù)文章
PHP連接MySQL
發(fā)布日期:2019-11-23 閱讀次數(shù):3378 字體大?。?a href="javascript:;" onclick="ChangeFontSize('content',16)">大

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

  • MySQLi extension這里的i意為improved
  • PDO全稱(chēng)PHP Data Objects

在PHP早期版本中我們使用MySQL擴(kuò)展,但該擴(kuò)展在2012年開(kāi)始不建議使用。

我該用MySQLi,還是PDO呢

如果你需要一個(gè)簡(jiǎn)短的回答,那就“習(xí)慣哪個(gè)就用哪個(gè)”

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

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

兩者都是面向?qū)ο?,但MySQLi提供了API接口。

兩者都支持預(yù)處理語(yǔ)句。預(yù)處理語(yǔ)句可以防止SQL注入,對(duì)于web項(xiàng)目安全性是非常重要的。

MySQLi和PDO連接MySQL實(shí)例

我們用以下三種方式來(lái)演示PHP操作MySQL:

  • MySQLi面向?qū)ο蟮姆绞?/li>
  • MySQLi面向過(guò)程的方式
  • PDO的方式

MySQLi面向?qū)ο蟮姆绞剑?/p>

$servername = "localhost";

$username = "username";

$password = "password";

$conn = new mysqli($servername, $username, $password);

if ($conn->connect_error) {

 die("連接失敗: " . $conn->connect_error);

}

echo "連接成功";

?>

注意在上面向?qū)ο蟮膶?shí)例中$connect_error是在PHP5.2.9和5.3.0中添加的。如果你需要兼容更早版本請(qǐng)使用以下代碼替換:

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

MySQLi面向過(guò)程的方式:

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

關(guān)閉連接

MySQLi面向?qū)ο蟮姆绞剑?/p>

$conn->close();

MySQLi面向過(guò)程的方式:

mysqli_close($conn);

PDO的方式:

$conn = null;