MySQLi准备好的语句可以多次执行查询

时间:2015-10-03 06:02:57

标签: php mysqli

我想知道是否有可能以这种方式使用多个查询?这将使我的工作变得简单或以其他任何方式做到这一点?刚转到<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> <script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>所以不知道。谢谢你

mysqli prepared statement

2 个答案:

答案 0 :(得分:0)

$stmt = $stmt->get_result()

返回mysqli_result并且它不再是准备好的语句,因此你不能做多个查询。

答案 1 :(得分:-3)

您不能对预准备语句使用“多个查询”。但是,您可以使用不同的参数集执行相同的查询 - 这正是准备语句的用途。根据您的代码判断,您需要第二个选项(所以我更正了问题标题)。您只需为已绑定的变量提供另一个值。

你去:

$mysqli = new mysqli('localhost', 'root', '', 'demo');  
$stmt = $mysqli -> prepare("SELECT * FROM users WHERE id = ?");
$stmt->bind_param('i', $id);
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) {
    //do something with row
}

$id = $id2; // you need to use the same variable you bound
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) {
    //do something with row
}
噢,是的,你的代码中也有一个愚蠢的拼写错误,现在已修复。你不应该覆盖语句变量。