JSON在我的应用程序中返回[null,null]

时间:2015-05-30 08:38:43

标签: php mysql sql json database

我想通过json将带有PHPH文件的数据库记录发送到我正在用IntelXDK制作的应用程序。因为我无法在英特尔XDK上使用PHP代码,所以我需要使用JSON。我想展示两个记录'引用'和作者'来自我的报价'我的屏幕上的表格。有人帮我这个代码,但它只返回[null,null]而不是我需要的两个记录..我尝试调试但我是PHP的新手,所以我可以让它工作..任何可以帮助的人或者看到此代码中的错误?谢谢!

PS:是的我现在已经有其他人就此问题提出了多个问题。我已经阅读了所有内容,但没有一个能解决我的问题。

 <?php

    if(isset($_GET["get_rows"]))
    {
        //checks the format client wants
        if($_GET["get_rows"] == "json")
        {
            $link = mysqli_connect("localhost", "xxxxx", "xxxxx", "xxxx");

            /* check connection */
            if (mysqli_connect_errno()) {
                echo mysqli_connect_error();
                header("HTTP/1.0 500 Internal Server Error");
                exit();
            }

            $query = "SELECT quote, author FROM quotes WHERE id = " . date('d');

            $jsonData = array();

            if ($result = mysqli_query($link, $query)) {

                /* fetch associative array */
            $row = $result->fetch_assoc($result);

            // Create a new array and assign the column values to it
             // You can either turn an associative array or basic array
            $ret= array();

            $ret[] = $row['quote']; 
            $ret[] = $row['author']; 

                //encode to JSON format

                echo  json_encode($ret);

            }

            else {

                echo  json_encode($ret);
            }

            /* close connection */
            mysqli_close($link);
        }
        else
        {
            header("HTTP/1.0 404 Not Found");
        }
    }
    else
    {
        header("HTTP/1.0 404 Not Found");
    }


    ?>

3 个答案:

答案 0 :(得分:0)

fetch_assoc()函数调用中存在错误 - 删除$result参数。如果启用了错误报告,您应该看到:

  

警告:mysqli_result :: fetch_assoc()需要0个参数,给定1个

只需将其更改为:

$row = $result->fetch_assoc();

在javascript中解析此响应,只需执行以下操作:

var obj = JSON.parse(xmlhttp.responseText);
document.getElementById("quote").innerHTML = obj[0];
document.getElementById("author").innerHTML = obj[1];

答案 1 :(得分:0)

更改此

$row = $result->fetch_assoc($result);

$row = $result->fetch_assoc();

只需将其更改为:

$row = $result->fetch_assoc();

<强>更新

response =  JSON.parse(xmlhttp.responseText);

您现在可以单独访问它们:

reponse.quoteresponse.author

答案 2 :(得分:0)

我认为你的问题在于fetch_assoc() 尝试使用它:

    $row = mysqli_fetch_assoc($result);

而不是

    $row = $result->fetch_assoc($result);

它适用于我的例子