//首先要連接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 heren";
}
//原來插入資料的時候要用mysql_escape_string,現在?
print "Unquoted string: $stringn";
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?你別想了,沒有。