程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PDO的使用

PDO的使用

編輯:關於PHP編程

//首先要連接mysql數據庫
$dbh = new PDO(mysql:host=localhost;dbname=test, $user, $pass);
//如果你想連mssql:
//mssql:host=localhost;dbname=testdb
//連pgsql:
//pgsql:host=localhost port=5432 dbname=testdb user=bruce password=mypass
//連odbc(DSN)
//odbc:testdb
//連access:
//odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\db.mdb;Uid=Admin
//還有oracle,sqlite,db2....

//執行個查詢
foreach ($dbh->query(SELECT * from FOO) as $row) {
    print_r($row); //這個結果和mysql_fetch_array差不多。PDOStatement::setFetchMode 可以調整。
}

//另外還可以:
$sth = $dbh->prepare("SELECT name, colour FROM fruit");
$sth->execute();

//將整個記錄集讀到數組裡:
$result = $sth->fetchAll();
print_r($result);
//輸出:
Array
(
[0] => Array
       (
         [NAME] => pear
         [0] => pear
         [COLOUR] => green
         [1] => green
       )

[1] => Array
       (
         [NAME] => watermelon
         [0] => watermelon
         [COLOUR] => pink
         [1] => pink
       )

)

//插入 / 刪 / 更新數據:
$count = $dbh->exec("DELETE FROM fruit WHERE colour = red");
//$count就是刪除的條數。相當於mysql_affected_rows
//也可用PDOStatement::rowCount

//偶忘了偶用啥數據庫了。。。。
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == mysql) {
   echo "Running on mysql; doing something mysql specific here ";
}

//原來插入數據的時候要用mysql_escape_string,現在?
print "Unquoted string: $string ";
print "Quoted string: " . $conn->quote($string) . " ";
//得到:
Unquoted string: Nice
Quoted string: Nice
//你看現在連引號都自動加了。。。。
//注意在不同的數據庫中結果不同,比如有的 => ,有的 => ,\ => \
//現在沒顧慮了,全自動。

//最後偶要關閉它了
$conn = null;
//但是!你可以保持連接:
$dbh = new PDO(odbc:SAMPLE, db2inst1, ibmdb2,
    array(PDO_ATTR_PERSISTENT => true));

//很簡單的不是?

附:特別簡單的特殊調用方法:
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name = ?");
if ($stmt->execute(array($_GET[name]))) { //你怕啥?自動quote!
   while ($row = $stmt->fetch()) {
print_r($row);
   }
}

也可以:
$stmt->bindParam(1, $id);
$stmt->bindParam(2, $_FILES[file][type]);
$stmt->bindParam(3, $fp, PDO::PARAM_LOB);

這麼好的功能,哪裡可以找到?php5.1以上在擴展裡,php5在pecl裡,php4?你別想了,沒有。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved