如何在PHP中迭代MySqli结果

时间:2016-12-14 00:23:48

标签: php mysqli

我有一个带有MySQLI db包装器的PHP类。我知道实际句柄运行正常,因为$result->num_rows返回1.

我正在处理这样的循环,它不起作用:

if($num != 0) //I KNOW that $num >= 1
{
    $response['posts'] = array();

    $reachedloop = "false";
    while($row = $result->fetch_array(MYSQLI_ASSOC))
    {
        $reachedLoop = "true";
        $post = array();
        $post['title'] = $row['Post_Title'];
        $post['songTitle'] = $row['Song_Title'];
        $post['artist'] = $row['Song_Artist'];
        $post['album'] = $row['Album_Title'];
        $post['latitude'] = $row['Post_Latitude'];
        $post['longitude'] = $row['Post_Longitude'];
        $post['desc'] = $row['desc'];
        array_push($response['posts'], $post);                    
    }
    $response["success"] = 1;
    echo $reachedloop
    echo json_encode($response);

调试显示while声明导致错误。没有在这里使用正确的语法找到SO帖子或文档。

2 个答案:

答案 0 :(得分:1)

我还没有被允许发表评论但是我想注意你在代码末尾附近遗漏了一个半冒号:echo $reachedloop

修改:您还提到您的查询是$results,但在您的代码中,您有$result,这可能只是一个错字。此外,你没有if语句的结束括号,它可能在复制/粘贴到StackOverflow时被截断。

答案 1 :(得分:-1)

您可能需要使用以下表单检查值:

while(($row = $result->fetch_array(MYSQLI_ASSOC)) !== null)