<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=PHP_Data_Objects</id>
	<title>PHP Data Objects - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://arolstar52-zhtest.hf.space/index.php?action=history&amp;feed=atom&amp;title=PHP_Data_Objects"/>
	<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=PHP_Data_Objects&amp;action=history"/>
	<updated>2026-06-27T18:00:51Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://arolstar52-zhtest.hf.space/index.php?title=PHP_Data_Objects&amp;diff=2290109&amp;oldid=prev</id>
		<title>imported&gt;Cwek：​/* 資料庫支援 */</title>
		<link rel="alternate" type="text/html" href="https://arolstar52-zhtest.hf.space/index.php?title=PHP_Data_Objects&amp;diff=2290109&amp;oldid=prev"/>
		<updated>2022-10-19T07:32:05Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;資料庫支援&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{noteTA&lt;br /&gt;
|G1 = IT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;PDO&amp;#039;&amp;#039;&amp;#039;（PHP Data Objects）是一種在[[PHP]]裡連接資料庫的使用介面&amp;lt;ref&amp;gt;{{cite web |title=PHP: PDO - Manual |url=http://php.net/manual/en/book.pdo.php |accessdate=2014-02-18 |archive-date=2014-02-23 |archive-url=https://web.archive.org/web/20140223123854/http://php.net/manual/en/book.pdo.php |dead-url=no }}&amp;lt;/ref&amp;gt;。PDO與mysqli&amp;lt;ref&amp;gt;{{cite web |title=MySQL Improved Extension |url=http://tw1.php.net/manual/en/book.mysqli.php |accessdate=2014-02-18 |deadurl=yes |archiveurl=https://web.archive.org/web/20140223124310/http://tw1.php.net/manual/en/book.mysqli.php |archivedate=2014-02-23 |df= }}&amp;lt;/ref&amp;gt;曾經被建議用來取代原本PHP在用的mysql&amp;lt;ref&amp;gt;{{cite web |title=Original MySQL API |url=http://tw1.php.net/manual/en/book.mysql.php |accessdate=2014-02-18 |archive-date=2014-02-23 |archive-url=https://web.archive.org/web/20140223124512/http://tw1.php.net/manual/en/book.mysql.php |dead-url=yes }}&amp;lt;/ref&amp;gt;相關函數，基於資料庫使用的安全性，因為後者欠缺對於[[SQL資料隱碼攻擊|SQL資料隱碼]]的防護&amp;lt;ref&amp;gt;{{cite web |title = PHP-DEV deprecating ext/mysql&amp;#039; - MARC |url = http://marc.info/?l=php-internals&amp;amp;m=131031747409271&amp;amp;w=2 |accessdate = 2014-02-18 |archive-date = 2014-10-14 |archive-url = https://web.archive.org/web/20141014100742/http://marc.info/?l=php-internals&amp;amp;m=131031747409271&amp;amp;w=2 |dead-url = no }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
== 範例 ==&lt;br /&gt;
以下是一個簡單的 PDO 更新交易資料庫的程式碼，其中採用了預處理的方式將執行語句與參數隔離：&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
    $query = &amp;quot;UPDATE `payment` SET `status` = &amp;#039;2&amp;#039;, `id` = ?, `method` = ? WHERE `payment_id` = ? and `status` = &amp;#039;1&amp;#039;&amp;quot;;&lt;br /&gt;
    $stmt = $this -&amp;gt; pdo -&amp;gt; prepare($query);&lt;br /&gt;
    $stmt -&amp;gt; bindParam(1, $id);&lt;br /&gt;
    $stmt -&amp;gt; bindParam(2, $type);&lt;br /&gt;
    $stmt -&amp;gt; bindParam(3, $payment_id);&lt;br /&gt;
    $result = $stmt -&amp;gt; execute();&lt;br /&gt;
?&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PDO默认会把数据库中查询的数据全部缓存下来，这在查询的结果集特别大时会有各种问题，比如消耗太多服务器资源，或造成运行的脚本因内存超限而终止。&amp;lt;br /&amp;gt;&lt;br /&gt;
下面的代码使用PDO对象的setAttribute方法来禁用缓存。&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$dsn = &amp;quot;mysql:host=&amp;quot; . DATABASE_HOST . &amp;quot;;port=&amp;quot; . DATABASE_PORT . &amp;quot;;dbname=&amp;quot; . DATABASE_NAME;&lt;br /&gt;
$username = DATABASE_USERNAME;&lt;br /&gt;
$passwd = DATABASE_PASSWORD;&lt;br /&gt;
$pdoConn = new PDO($dsn, $username, $passwd);&lt;br /&gt;
&lt;br /&gt;
$sql = &amp;quot;select * from big_table&amp;quot;; //假设这个表行数超多&lt;br /&gt;
&lt;br /&gt;
$pdoConn-&amp;gt;setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); //禁用缓存&lt;br /&gt;
$stmt = $pdoConn-&amp;gt;query($sql);&lt;br /&gt;
$i = -1;&lt;br /&gt;
while ($row = $stmt-&amp;gt;fetch()) {&lt;br /&gt;
    $i ++;&lt;br /&gt;
    if ($i % 10000) { //每一万个数据采样显示一下&lt;br /&gt;
        continue;&lt;br /&gt;
    }&lt;br /&gt;
    var_dump($i);&lt;br /&gt;
    var_dump($row);&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==資料庫支援==&lt;br /&gt;
*[[Firebird (数据库)|firebird]]&lt;br /&gt;
*informix&lt;br /&gt;
*[[MySQL|mysql]]&lt;br /&gt;
*[[Microsoft SQL Server|mssql]]&lt;br /&gt;
*[[ODBC|odbc]]&lt;br /&gt;
*[[PostgreSQL|pgsql]]&lt;br /&gt;
*[[SQLite|sqlite]]&lt;br /&gt;
&lt;br /&gt;
== 参考文献 ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
== 外部連結 ==&lt;br /&gt;
* [http://micmap.org/php-by-example/zh/function/pdo 测试PDO函数在线]{{Wayback|url=http://micmap.org/php-by-example/zh/function/pdo |date=20150209154015 }}&lt;br /&gt;
&lt;br /&gt;
{{Database}}&lt;br /&gt;
[[Category:PHP]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Cwek</name></author>
	</entry>
</feed>