使用json

时间:2015-05-29 19:07:32

标签: javascript php html mysql json

我正在使用Intel XDK构建一个简单的应用程序,我需要将我的应用程序连接到mysql数据库。因为英特尔XDK不允许PHP文件,我需要通过javascrapt和json将我的html连接到php。

以下是我找到并编辑的PHP代码,它将PHP数组作为JSON对象发送到英特尔XDK应用程序:

    <?php

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

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

        $query = "SELECT * FROM quotes LIMIT 1";

        $jsonData = array();

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

            /* fetch associative array */
            while ($row = mysqli_fetch_row($result)) {
                $jsonData = $row;
            }

            /* free result set */
            mysqli_free_result($result);

            //encode to JSON format

            echo  "<h1>" . json_encode($jsonData) . "</h1>";

        }
        else {

           echo  "<h1>" . json_encode($jsonData) . "</h1>";
        }

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

?>

我的index.html包含以下代码:

<head>
    <script>
                function GetQuote() {
                var xmlhttp;
                if (window.XMLHttpRequest)
                  {// code for IE7+, Firefox, Chrome, Opera, Safari
                  xmlhttp=new XMLHttpRequest();
                  }
                else
                  {// code for IE6, IE5
                  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                  }
                xmlhttp.onreadystatechange=function()
                  {
                  if (xmlhttp.readyState==4 && xmlhttp.status==200)
                    {
                    document.getElementById("quote").innerHTML=xmlhttp.responseText;
                    }
                  }
                xmlhttp.open("GET", "http://domain/db.php?get_rows=json", false);
                xmlhttp.send();
                }
    </script>    
    </head>

    <body onload="GetQuote()">

        <div id="quote">     </div>

    </body>

我的代码正常运行,我的应用显示了我表格中的最新一行。问题是这段代码返回整行,所以我在屏幕上得到这样的东西: [ “列1”, “列2”]。我需要的是“Column1”作为记录,“column2”作为记录。

任何可以帮助我的人?我整天都在研究这个问题而无法找到解决方案..谢谢!

这是我现在的代码:

<?php

if(isset($_GET["get_rows"]))
{
    //checks the format client wants
    if($_GET["get_rows"] == "json")
    {
        $link = mysqli_connect("localhost", "xxx", "xxxx", "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");
}


?>

我现在只用[null,null]得到一个空屏幕..任何人都知道这段代码有什么问题?我尝试过调试,但我是PHP的新手,我无法让它工作..谢谢!

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

    $query = "SELECT column1,column2 FROM quotes LIMIT 1";

    $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['name1'] = $row['column1']; 
        $ret['name2'] = $row['column2']; 
        // Or you can simply use, comment the above two lines and uncomment the following two lines.
        //$ret[] = $row['column1']; 
        //$ret[] = $row['column2']; 


        //encode to JSON format

        echo  json_encode($ret);

如果您在此处发现任何类型错误,请分享