试图从PHP multi_query获得价值

时间:2018-06-29 21:03:43

标签: php mysqli

我在这个问题上停留了一段时间,正在寻找有用的建议。

$resultset = $connection->multi_query($sql);

pseudo:

IF $resultset > 0 (--> if the sql query returned at least one result) {
 // do something
}

现在问题出在伪部件上,我尝试执行以下操作:

if($resultset > 0) // takes no effect
if($resultset->num_rows > 0) // Notice: Trying to get property of non-object

我必须使用multi_query,所以mysqli_query / mysqli_fetch_array不是解决方案

感谢您的提示。...

2 个答案:

答案 0 :(得分:3)

请尝试:

if($connection->multi_query($sql))
{
    //sample query taken from php manual, see link below
    do {
        /* store first result set */
        if ($result = $connection->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($connection->more_results()) {
            printf("-----------------\n");
        }
    } while ($connection->next_result());

}
else
{
    //handle error
    echo mysqli_error ( $connection );
}

如果您查看多重查询(here)的文档,您将看到该函数返回一个boolean

源代码也取自php manual

答案 1 :(得分:2)

multi_query()返回一个布尔值,该布尔值指示第一个查询是否成功,但不返回mysqli_result对象。

您必须调用store_result()方法以获取第一个结果集。

$resultset = $connection->store_result();

要获取后续结果集,请使用more_results()next_result()

请参阅documentation中的示例。