Mar*_*rco 7 php mysql sql-injection prepared-statement
我正在研究有关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();
Run Code Online (Sandbox Code Playgroud)
这是我的第一个问题:
在我阅读时,它还提到了以下内容:
如果未将结果绑定到变量,请使用$ row = $ stmt-> fetch(),并将每个变量作为$ row ['column_name']访问.所以,
使用2种方法中的任何一种循环结果集是否有任何优缺点?如果没有区别,那么为什么首先要使用$ stmt-> bind_result来绑定结果呢?如果我可以使用$ row = $ stmt-> fetch()代替什么呢?
这是我的另一个问题:
希望你的答案能让我理解更准备好的陈述,这样我才能建立安全的东西......
谢谢
| 归档时间: |
|
| 查看次数: |
4806 次 |
| 最近记录: |