mysqli编写的语句,如何循环结果集
我正在研究关于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死亡时,无论如何都会释放内存。
链接地址: http://www.djcxy.com/p/63731.html