mysqli::query
和 和有什么不一样mysqli::real_query
?
或者
mysqli_query
和 和有什么不一样mysqli_real_query
?
查看mysqli_query ()的文档:
从功能上讲,使用此函数与调用 mysqli_real_query() 后跟 mysqli_use_result() 或 mysqli_store_result() 相同。
据我了解 real_query 实际上执行查询,并且 use/store_result 启动检索查询结果集的过程。query() 两者都做。
有点晚了,但对我来说最大的进步是使用默认设置调用这些函数时的 RAM 使用情况:mysqli_real_query()
您不会将整个结果复制到 RAM 中,mysqli_query()
默认情况下会这样做(尽管可以使用$resultmode
参数进行更改)。
在实践中,我在其他答案中看不到另一个区别。您可能需要使用mysqli_real_query()
forCALL
语句。
如果您正在调用存储过程,则它可以返回多个结果。mysqli_query()
将获取第一个结果,但可能需要获取更多结果,这会导致错误。您需要使用mysqli_real_query
(或mysqli_multi_query()
) 来获取这些结果集。
遗憾的是,该解释位于PHP 文档的存储过程部分,因此很难找到。
我给你一个代码示例,以防万一,调用一个假设返回多个结果集的过程mysqli::real_query
:
$query="CALL storedProcedure()";
if($conn->real_query($query)){
do{
if($result=$conn->store_result()) {
while($row=$result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
}while($conn->more_results() && $conn->next_result());
}