33

mysqli::query和 和有什么不一样mysqli::real_query

或者

mysqli_query和 和有什么不一样mysqli_real_query

4

4 回答 4

20

mysqli::query如果有任何结果,将返回结果。

mysql::real_query成功时返回 true,否则返回 false

您可能已经在 php 文档中看到了这一点:

于 2012-11-20T09:06:08.333 回答
19

查看mysqli_query ()的文档:

从功能上讲,使用此函数与调用 mysqli_real_query() 后跟 mysqli_use_result() 或 mysqli_store_result() 相同。

据我了解 real_query 实际上执行查询,并且 use/store_result 启动检索查询结果集的过程。query() 两者都做。

于 2012-11-20T09:04:35.280 回答
4

有点晚了,但对我来说最大的进步是使用默认设置调用这些函数时的 RAM 使用情况:mysqli_real_query()您不会将整个结果复制到 RAM 中,mysqli_query()默认情况下会这样做(尽管可以使用$resultmode参数进行更改)。

于 2019-09-19T10:35:31.813 回答
2

在实践中,我在其他答案中看不到另一个区别。您可能需要使用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());          
}
于 2019-10-01T05:51:08.720 回答