mysqli_query和mysqli_real_query之间的区别

时间:2012-11-20 09:01:14

标签: php mysqli

mysqli::querymysqli::real_query之间的区别是什么?

OR

mysqli_querymysqli_real_query之间的区别是什么?

4 个答案:

答案 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());          
}