PDO的使用

PDO

PHP連接各種資料庫後,如mysql,postgresql,sqlite,由於sql語法的差異,不同資料庫各有相異的一些用法,如果轉換資料庫,就必須修改所有相異的所在,且不同資料庫的不同寫法也造成學習的負擔,PDO可以解決這些問題。


PDO是PHP Data Object的首字母縮寫,是在PHP原有的各種資料庫API上再建構一層輕量級的資料庫存取介面,只要使用PDO就可以使用相同的方法存取支援PDO的各種資料庫,由於PDO不是完整實做的抽象介面,不會轉換sql語法或是模擬原來資料庫不支援的sql語法,所以如果有這些需求,就必須改用如Zend DB或其他的實做介面,以適用不同的資料庫,但一套PDO語法還是可以適用於不同的資料庫的存取,大部份的狀況下,已經大大提高使用方便性。


PDO不能單獨存在,如果要存取mysql,就須安裝php的mysql驅動程式,要存取sqlite,就必須安裝sqlite的驅動程式,PDO只是建構在這些驅動程式上的抽象介面,PHP自5.1版本後,核心即內建支援PDO,不須任何安裝,稍微改變使用習慣即可套用這套功能強大的抽象介面,存取各種資料庫。

PDO的使用

連接資料庫

$host
$dbname
$username
$password
$db=new PDO("mysql:host=$host;dbname=$dbname",$username,$password);

資料庫查詢

$db->query('set names utf8');

使用prepared statement避免sql injection攻擊

$st=$db->prepare("select name,author,isbn from book where name=:name  and author=:author;");            
$name='book1';
$author='auth1';
$st->bindParam(':name',$name);
$st->bindParam(':author',$author);
$st->execute();

取得資料庫內容

$results=$st->fetchAll(PDO::FETCH_OBJ);            
            foreach($results as $result){
                echo $result->name;
                echo '<br />';
            }

切斷資料庫的連接

$db=null;

分類:PHP