| 導購 | 订阅 | 在线投稿
分享
 
 
 

PDO的使用

來源:互聯網  2008-12-22 08:10:28  評論

//首先要連接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\n";

}

//原來插入數據的時候要用mysql_escape_string,現在?

print "Unquoted string: $string\n";

print "Quoted string: " . $conn->quote($string) . "\n";

//得到:

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?你別想了,沒有。

//首先要連接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\n"; } //原來插入數據的時候要用mysql_escape_string,現在? print "Unquoted string: $string\n"; print "Quoted string: " . $conn->quote($string) . "\n"; //得到: 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?你別想了,沒有。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有