一、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(). 2、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=copymysql