php 連結mysql的三種方式對比

來源:互聯網
上載者:User

標籤:服務端   one   cape   寫法   參數   mys   bind   word   charset   

PHP串連Mysql的三種方式:

1.原生的串連方式 

原生的串連方式是面向過程的寫法

<?php$host = ‘localhost‘;$database = ‘test‘;$username = ‘root‘;$password = ‘root‘;$selectName = ‘harry‘;//要尋找的使用者名稱,一般是使用者輸入的資訊$insertName = ‘testname‘;$connection = mysql_connect($host, $username, $password);//串連到資料庫mysql_query("set names ‘utf8‘");//編碼轉化if (!$connection) {    die("could not connect to the database.\n" . mysql_error());//診斷串連錯誤}$selectedDb = mysql_select_db($database);//選擇資料庫if (!$selectedDb) {    die("could not to the database\n" . mysql_error());}$selectName = mysql_real_escape_string($selectName);//防止SQL注入$query = "select * from user where name = ‘$selectName‘";//構建查詢語句$result = mysql_query($query);//執行查詢if (!$result) {    die("could not to the database\n" . mysql_error());}while ($row = mysql_fetch_row($result)) {    //取出結果並顯示    $name = $row[0];    $age = $row[1];    echo "Name: $name Age: $age \n";}

       PHP的MySQL擴充是設計開發允許php應用與MySQL資料庫互動的早期擴充。MySQL擴充提供了一個面向過程的介面,並且是針對MySQL4.1.3或者更早版本設計的。因此這個擴充雖然可以與MySQL4.1.3或更新的資料庫服務端進行互動,但並不支援後期MySQL服務端提供的一些特性。由於太古老,又不安全,所以已被後來的mysqli完全取代;

2.Mysqli的串連方式 

PHP與Mysqli擴充,面向過程、對象

 1 <?php 2 $host = ‘localhost‘; 3 $database = ‘test‘; 4 $username = ‘root‘; 5 $password = ‘root‘; 6 $selectName = ‘harry‘;//要尋找的使用者名稱,一般是使用者輸入的資訊 7 $insertName = ‘testname‘; 8  9 // 建立對象並開啟串連,最後一個參數是選擇的資料庫名稱10 $mysqli = new mysqli($host, $username, $password, $database);11 12 // 編碼轉化為 utf813 if (!$mysqli->set_charset("utf8")) {14     printf("Error loading character set utf8: %s\n", $mysqli->error);15 } else {16     printf("Current character set: %s\n", $mysqli->character_set_name());17 }18 19 if (mysqli_connect_errno()) {20     // 診斷串連錯誤21     die("could not connect to the database.\n" . mysqli_connect_error());22 }23 24 $selectedDb = $mysqli->select_db($database);//選擇資料庫25 if (!$selectedDb) {26     die("could not to the database\n" . mysql_error());27 }28 29 if ($stmt = $mysqli->prepare("select * from user where name = ?")) {30     /* bind parameters for markers */31     $stmt->bind_param("s", $selectName);32     /* execute query */33     $stmt->execute();34     /* bind result variables */35     $stmt->bind_result($name, $age);36 37     /* fetch values */38     while ($stmt->fetch()) {39         echo "Name: $name Age: $age \n";40     }41     /* close statement */42     $stmt->close();43 }
View Code

PHP的mysqli擴充,我們有時稱之為MySQL增強擴充,可以用於使用 MySQL4.1.3或更新版本中新的進階特性。其特點為:物件導向介面 、prepared語句支援、多語句執行支援、事務支援 、增強調試能力、嵌入式服務支援 、預先處理方式完全解決了sql注入的問題。不過其也有缺點,就是只支援mysql資料庫。如果你要是不操作其他的資料庫,這無疑是最好的選擇。

3.PDO的串連方式 

PHP與PDO擴充,面向過程、對象

 1 <?php 2 $host = ‘localhost‘; 3 $database = ‘test‘; 4 $username = ‘root‘; 5 $password = ‘root‘; 6 $selectName = ‘harry‘;//要尋找的使用者名稱,一般是使用者輸入的資訊 7 $insertName = ‘testname‘; 8  9 $pdo = new PDO("mysql:host=$host;dbname=$database", $username, $password);//建立一個pdo對象10 $pdo->exec("set names ‘utf8‘");11 $sql = "select * from user where name = ?";12 $stmt = $pdo->prepare($sql);13 $rs = $stmt->execute(array($selectName));14 15 if ($rs) {16     // PDO::FETCH_ASSOC 關聯陣列形式17     // PDO::FETCH_NUM 數字索引數組形式18     while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {19         $name = $row[‘name‘];20         $age = $row[‘age‘];21         echo "Name: $name Age: $age \n";22     }23 }
View Code

PDO是PHP Data Objects的縮寫,是PHP應用中的一個資料庫抽象層規範。PDO提供了一個統一的API介面可以使得你的PHP應用不去關心具體要串連的資料庫伺服器系統類別型,也就是說,如果你使用PDO的API,可以在任何需要的時候無縫切換資料庫伺服器,比如從Oracle 到MySQL,僅僅需要修改很少的PHP代碼。其功能類似於JDBC、ODBC、DBI之類介面。同樣,其也解決了sql注入問題,有很好的安全性。不過他也有缺點,某些多語句執行查詢不支援(不過該情況很少)。

官方比較:

 

php 連結mysql的三種方式對比

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.