PDO使用手冊


     PDO(PHP Data Object) 是PHP 5新出來的東西,在PHP 6都要出來的時候,PHP 6只默認使用PDO來處理數據庫,將把所有的數據庫擴展移到了PECL,那麼默認就是沒有了我們喜愛的php_mysql.dll之類的了

【PDO是啥】

PDO是PHP 5新加入的一個重大功能,因爲在PHP 5以前的php4/php3都是一堆的數據庫擴展來跟各個數據庫的連接和處理,什麼 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等擴展來連接MySQL、PostgreSQL、MS SQL Server、SQLite,同樣的,我們必須藉助 ADOdb、PEAR::DB、PHPlib::DB之類的數據庫抽象類來幫助我們,無比煩瑣和低效,畢竟,php代碼的效率怎麼能夠我們直接用C/C++寫的擴展斜率高捏?所以嘛,PDO的出現是必然的.

1先找到配置文件php.ini中以下幾項擴展

extension=php_pdo_firebird.dll

extension=php_pdo_mssql.dll

extension=php_pdo_mysql.dll

extension=php_pdo_oci.dll

extension=php_pdo_oci8.dll

extension=php_pdo_odbc.dll

extension=php_pdo_pgsql.dll

extension=php_pdo_sqlite.dll

注:若在linux環境下使用將擴展以下幾項:

extension=pdo.so

extension=pdo_sqlite.so

extension=sqlite.so


2.使用PDO連接數據庫(我使用的是sqlite3數據庫

$dsn = 'sqlite:sql.db';

$dbh = new PDO($dsn, $user, $pwd);

$dbh = null; //(unset)

3.一些簡單的執行(關鍵字:exec)

<?php

$dsn = 'sqlite:sql.db';

$dbh = new PDO($dsn, $user, $pwd);

$result = $dbh->exec("INSERT INTO test SET name = 'seal',age='20'");

$result=$dbh->exec("delete from test where name='seal'");

$dbh = null;

?>

執行失敗則返回0;

4.查詢輸出數據常用方法一:

$rs = $dbh->query("select * from test");

while($row = $rs->fetch()){

echo $row[name].$row[age];

}

5.查詢數據方法二:

foreach ($dbh->query('SELECT * from test') as $row) {

      echo $row[name].$row[age];

   }

6.查詢數據方法三:

$stmt = $dbh->prepare("select * from test");

if ($stmt->execute()) {

while ($row = $stmt->fetch()) {

    print_r($row);

}

}

6.1 PDO::prepare 別類查詢方式(execute功能很強大):

$stmt = $dbh->prepare("select * from test where name = ?");

if ($stmt->execute(array("zjh"))) {   //zjh爲查詢的條件

while ($row = $stmt->fetch()) {

    print_r($row);

}

}

7.執行的別種方式(也是用execute)

$stmt = $dbh->prepare("insert into test (name, age) values (?, ?)"); //and updata

$stmt->bindParam(1, $name);

$stmt->bindParam(2, $age);

$name = 'one';    // insert one row

$age = 1;

$stmt->execute();

$name = 'two'; // insert another row with different values

$age = 2;

$stmt->execute();

關鍵字總結

查詢操作主要是

PDO::query(): 主要是用於有記錄結果返回的操作,特別是SELECT操作

PDO::exec(): 主要是針對沒有結果集合返回的操作,比如INSERT、UPDATE、DELETE等操作,它返回的結果是當前操作影響的列數

PDO::prepare(): 主要是預處理操作,需要通過$rs->execute()來執行預處理裏面的SQL語句,這個方法可以綁定參數,功能比較強大

獲取結果集操作主要是:

PDOStatement::fetchColumn(): 是獲取結果指定第一條記錄的某個字段,缺省是第一個字段

PDOStatement::fetch():是用來獲取一條記錄

PDOStatement::fetchALL():是獲取所有記錄集到一箇中,獲取結果可以通過PDOStatement::setFetchMode來設置需要結果集合的類型。

另外有兩個周邊的操作,

PDO::lastInsertId():是返回上次插入操作,主鍵列類型是自增的最後的自增ID。

PDOStatement::rowCount() :主要是用於PDO::query()和PDO::prepare()進行DELETE、INSERT、UPDATE操作影響的結果集,對PDO::exec()方法和SELECT操作無效。

完整的例子可看PDO.php

發佈了19 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章