PDO - PHP 資料物件(PHP Data Object)的縮寫,作為一個為多種資料庫提供統一的連接介面的方式PDO底層需要配合對應資料庫的PDO資料驅動來操作資料庫。 PDO是當今PHP官方推薦的資料庫連接方式,其優勢在於:
#1、PDO 真正的以底層實現的統一介面數庫操作接口,不管後端使用的是何種資料庫,如果代碼封裝好了以後,應用層調用基本上差不多的,當後端數據庫更換了以後,應用層代碼基本不用修改.(推薦學習:PHP程式設計從入門到精通)
2、PDO 支援更高階的DB 特性操作,如:儲存過程的調度等, mysql 原生程式庫是不支援的.
3、 PDO 是PHP 官方的PECL 函式庫,相容性穩定性必然要高於MySQL Extension,可以直接使用pecl upgrade pdo 指令升級.
4、PDO 可以防止SQL 注入,確保資料庫更安全 PDO 防止SQL 注入的原理
在PHP 5.1.0 之後PDO 預設開啟狀態你可以透過phpinfo()函數來查看PDO 的開啟狀態:
#PDO 預處理
當我們使用資料庫執行查詢時,資料庫管理系統( DBMS )會對查詢進行編譯,最佳化查詢,而使用PDO 預處理可以讓這個過程只在第一次查詢的時候進行,在後續的相同的查詢只需要對綁定的參數進行替換,這樣就節省了重複編譯的時間,另外使用PDO 參數綁定還可以避免SQL 注入等安全性問題。
程式碼示範:
<?phptry{ $dbh=new PDO('mysql:host=localhost;dbname=testDB','root',''); $stmt=$dbh->prepare("INSERT users (user_name,sex) VALUES (:user_name,:sex)"); $stmt->bindParam(':user_name',$name); $stmt->bindParam(":sex",$sex); //插入一行 $name="yang001"; $sex="M"; $stmt->execute(); //再次插入一行 $name="yang002"; $sex="F"; $stmt->execute(); }catch (PDOException $e){ print "Error ! : ".$e->getMessage(); die(); }
查看資料庫結果如下:
#我們使用預處理的查詢語句來取出結果:
<?phptry{ $dbh=new PDO('mysql:host=localhost;dbname=testDB','root',''); $stmt=$dbh->prepare("SELECT * FROM users WHERE user_name=:user_name "); $stmt->bindParam(':user_name',$name); //插入一行 $name="yang001"; if($stmt->execute()){ while ($row=$stmt->fetch(PDO::FETCH_ASSOC)){ print_r($row); } } }catch (PDOException $e){ print "Error ! : ".$e->getMessage(); die(); }
結果如下:
以上是php用pdo好嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!