[英]mysqli prepared statement , how to loop the result set
我正在研究有關mysqli准備好的陳述,我有兩個問題。
在我閱讀時,我發現准備好的語句的執行順序如下所示:
$sql = 'SELECT image_id, filename, caption FROM images WHERE image_id = ?';
// connect to the database
$conn = ....
$stmt = $conn->stmt_init();
$stmt->prepare($sql);
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->bind_result($image_id, $filename, $caption);
// optional: get total of records in the result set
$stmt->store_result();
$numRows = $stmt->num_rows;
// loop through the result set
while ($stmt->fetch()) {
// code goes here...
}
or
// fetch the result for one record
$stmt->fetch()
// free & close
$stmt->free_result();
$stmt->close;
$conn->close();
這是我的第一個問題:
在我閱讀時,它還提到了以下內容:
如果未將結果綁定到變量,請使用$ row = $ stmt-> fetch(),並將每個變量作為$ row ['column_name']訪問。 所以,
使用2種方法中的任何一種循環結果集是否有任何優缺點? 如果沒有區別,那么為什么首先要使用$ stmt-> bind_result來綁定結果呢? 如果我可以使用$ row = $ stmt-> fetch()代替什么呢?
這是我的另一個問題:
希望你的答案能讓我理解更准備好的陳述,這樣我才能建立安全的東西......
謝謝
$ stmt-> free_result()幾乎與名稱相同:它釋放與結果相關的內存。
$ stmt-> close關閉語句句柄(實際是光標),使得無法循環遍歷結果集(再次)。
雖然手冊指出:“你應該總是用mysqli_free_result()釋放你的結果,當你的結果對象不再需要時”,通常的做法是不要使用free_result並關閉語句。 關閉時,你不能再使用結果集,或者重用它,當php死掉時,無論如何都要釋放內存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.