Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQLi prepared语句可以多次执行查询_Php_Mysqli - Fatal编程技术网

Php MySQLi prepared语句可以多次执行查询

Php MySQLi prepared语句可以多次执行查询,php,mysqli,Php,Mysqli,我想知道这样使用多重查询是否可能?这会让我的工作变得简单,还是用其他方法?刚刚转到mysqli编写的语句,所以不知道。谢谢 $mysqli = new mysqli('localhost', 'root', '', 'demo'); $stmt = $mysqli -> prepare("SELECT * FROM users WHERE id = ?"); $stmt->bind_param('i', $id); $stmt->execute(); $stmt = $st

我想知道这样使用多重查询是否可能?这会让我的工作变得简单,还是用其他方法?刚刚转到mysqli编写的语句,所以不知道。谢谢

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

$stmt->bind_param('i', $id2);
$stmt->execute();
$stmt = $stmt->get_result();
while ($row = $stmt->fetch_assoc()) {
    //do something with row
}
不能对准备好的语句使用“多重查询”。但是,您可以使用不同的参数集执行相同的查询—这正是准备语句的目的。根据代码判断,您需要第二个选项(因此我更正了问题标题)。您只需为已绑定的变量提供另一个值

给你:

$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
}
哦,是的,你的代码中也有一个愚蠢的拼写错误,现在已经修复了。您不应该覆盖语句变量

$stmt = $stmt->get_result()

返回mysqli_结果,它不再是prepared语句,因此您不能执行多个查询。

感谢您回答我的其他问题,现在我转到mysqli
prepared statements
我熟悉mysqli,因此尚未转到pdo。你能给我举个例子说明它将如何使用或者我的方法是正确的吗?我得到了这个错误
致命错误:调用未定义的方法mysqli_result::bind_param()
@WayToGo来看看这个链接。它会帮助你的。此示例不起作用,请解释或更正它。它仍然有一个错误
致命错误:调用未定义的方法mysqli\u result::execute()
感谢您的更正。