1、PDO::query PDO::query執行一條SQL語句,如果通過,則返回一個PDOStatement對象。PDO::query函數有個“非常好處”,就是可以直接遍歷這個返回的記錄集。 示例如下: $sql = 'SELECT name FROM url'; foreach ($dbh->query($sql) as $row) { print $row['name'] . "\t"; } query同傳統的mysql query函數類似,同樣需要對開發者自行對輸入的sql語句進行安全檢查。 query因為會返回PDOStament對象,似乎用在SELECT語句執行上更合適,這跟上文提到的query支持直接遍歷不謀而合。 query執行后,在下一次query執行之前,如果不取走所有返回的記錄集,則query將會執行失敗,除非我們調用 PDOStatement::closeCursor()來釋放數據庫資源與PDOStatement對象。 原話:If you do not fetch all of the data in a result set before issuing your next call to PDO::query(), your call may fail. Call PDOStatement::closeCursor() to release the database resources associated with the PDOStatement object before issuing your next call to PDO::query(). 二、PDO::exec PDO::exec執行一條SQL語句,並返回受影響的行數。此函數不會返回結果集合。官方建議: 對於在程序中只需要發出一次的 SELECT 語句,可以考慮使用 PDO::query()。 對於需要發出多次的語句,可用 PDO::prepare() 來准備一個 PDOStatement 對象並用 PDOStatement::execute() 發出語句。 PDO::exec支持SELECT/DELETE/UPDATE/INSERT等全部SQL語句執行,所以相比PDO query()函數功能要強大的多。由於只返回受影響的函數,所以,如果執行SELECT則無法得到PDOStatement對象,故也無法遍歷結果集,只能按照官方建議去使用query或execute函數。 --------------------- 本文來自 szjljj 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/szjljj/article/details/51816938?utm_source=copy