mysqli::query
和mysqli::real_query
之间的区别是什么?
OR
mysqli_query
和mysqli_real_query
之间的区别是什么?
答案 0 :(得分:18)
查看mysqli_query()的文档:
从功能上讲,使用此功能与调用相同 mysqli_real_query()后跟mysqli_use_result()或 mysqli_store_result()。
根据我的理解,real_query实际执行查询,并使用/ store_result启动检索查询结果集的过程。 query()同时执行。
答案 1 :(得分:17)
mysqli::query
将返回结果。
mysql::real_query
成功时返回true,否则返回false
你可以在php doc中看到这个:
答案 2 :(得分:1)
有点晚,但是对我来说最大的进步是使用默认设置调用这些函数时的RAM使用情况:使用mysqli_real_query()
时,您不会将整个结果复制到RAM中,默认情况下mysqli_query()
(尽管可以使用$resultmode
参数进行更改)。
答案 3 :(得分:1)
在实践中,我在其他答案中看不到另一个差异。 您可能需要对mysqli_real_query()
语句使用CALL
。
如果要调用存储过程,则它可以返回多个结果。 mysqli_query()
将获取第一个结果,但可能会获取更多需要获取的结果,这将导致错误。您需要使用mysqli_real_query
(或mysqli_multi_query()
)来获取这些结果集。
不幸的是,这种解释在stored procedures section of the PHP docs中,所以很难理解。
我为您提供一个代码示例,以防万一,调用一个假定使用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());
}