当前位置: 首页 > 知识库问答 >
问题:

使用JSON从PHP到Javascript的MySQL数据

慕兴平
2023-03-14

我试图使用一个代码,将数据从一个mySQL数据库绑定到一个变量的数据,把所有产生的$x到一个PHP数组,最后将其转换为JSON格式。然后,我将JSON转换为javascript来处理来自数据库的数据。

请查看我的代码:

<?php
        //bind to $x
        $mysqli = new mysqli('localhost', 'root', 'root', 'mytable');
        if ($stmt = $mysqli->prepare("SELECT x FROM data")) {
            $stmt->bind_result($x);
            $OK = $stmt->execute();
        }
        //put all of the resulting $x into a PHP array
        $result_array = Array();
        while($stmt->fetch()) {
            $result_array[] = $x;
        }
        //convert the PHP array into JSON format, so it works with javascript
        $json_array = json_encode($result_array);

        if ($stmt = $mysqli->prepare("SELECT data.y FROM data")) {
            $stmt->bind_result($y);
            $OK = $stmt->execute();
        }
        //put all of the resulting y into a PHP array
        $result_array = Array();
        while($stmt->fetch()) {
            $result_array[] = $y;
        }
        //convert the PHP array into JSON format, so it works with javascript
        $json_array2 = json_encode($result_array);  


    ?>  

    <script>
        var xv = <?php echo $json_array; ?>;
        var yv = <?php echo $json_array2; ?>;
        var storage = [];
        for(var i=0;i<100;i++)
        { 
            var x = xv[i];
            var y = yv[i];
            var json = {x: x, y: y};
            storage.push(json); 
        }

我的问题是,为什么页面将其显示为输出,而不将数据传输到阵列

"准备("SELECT x从数据")) { $stmt-

共有3个答案

孟子墨
2023-03-14

第一:如果在输出中看到PHP代码,则需要检查服务器和PHP配置。web服务器将您的PHP脚本解释为纯文本,并将原始代码吐出,而不是通过PHP解释器执行。

第二:在Javascript中嵌入PHP并不理想。您应该有一个PHP脚本来处理MySQL查询,然后用AJAX请求获取Javascript中的输出。此外,您变异数据的方式是冗余和次优的。

这将从数据库中检索结果并将其编码为JSON:

<?php
    // connect, query, bind results
    $result = [];
    $mysqli = new mysqli('localhost', 'user', 'pass', 'db');
    if ($stmt = $mysqli->prepare("SELECT x,y FROM table")) {
        $stmt->execute();
        $stmt->bind_result($x,$y);

        while ( $stmt->fetch() ) {
            $result[] = [
                'x' => $x, 
                'y' => $y
            ];
        }

        echo json_encode($result);
    }
?>  

这是一个从PHP脚本检索输出的基本AJAX示例:

<script>
function fetchMyStuff() {
    // basic ajax example
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if ( xhr.readyState == 4 ) {
            console.log(
                JSON.parse( xhr.responseText )
            );
        }
    }
    xhr.open('GET', 'myscript.php', true);
    xhr.send();
}

fetchMyStuff();
</script>

您将在控制台中看到与查询结果相对应的结果对象:

[{x:'x1':y:'y1'},{x:'x2',y:'y2'},...]

就我个人而言,我不喜欢预准备语句的限制,更喜欢对我的PHP文件进行更优化的方法:

<?php
    $mysqli = new mysqli('localhost', 'user', 'pass', 'db');
    echo json_encode(
       $mysqli->query("SELECT x,y FROM table")->fetch_all( MYSQLI_ASSOC )
    );
?>  

这利用mysql-nd模块来执行所有的工作,将完整的结果集作为一个关联数组获取,并将其编码在几行中。

龚鸿雪
2023-03-14

xv和yv是一个字符串,因为您使用了json_编码。

您可以使用JSON. parse将字符串转换为json。

var xv = "<?php echo $json_array; ?>";
xv = JSON.parse(xv);
var yv = "<?php echo $json_array2; ?>";
yv = JSON.parse(yv);
var storage = [];
for(var i=0;i<100;i++)
{ 
     var x = xv[i];
     var y = yv[i];
     var json = {x: x, y: y};
     storage.push(json); 
}
吕霍英
2023-03-14

在这些行中,您有错误的代码

var xv = "<?php echo $json_array; ?>";
var yv = "<?php echo $json_array2; ?>";

您正在将json\u encode的输出打印到双引号部分。这意味着当PHP呈现该页面时,输出将如下所示:

var xv = "[...smth]";

在这些行之后,您试图从中的数组中获取值,但xvxz变量不是对象类型,而是字符串。与其这样做,不如这样做:

var xv = <?=$json_array;?>;
var yv = <?=$json_array2;?>;

 类似资料:
  • 问题内容: 如何将JSON数据从浏览器中的Javascript发送到服务器,并由PHP在其中进行解析? 问题答案: 我在这里获得了很多信息,所以我想发布我发现的解决方案。 问题: 从浏览器上的Javascript获取JSON数据到服务器,然后让PHP成功解析它。 环境: Windows上的浏览器(Firefox)中的Javascript。LAMP服务器作为远程服务器:Ubuntu上的PHP 5.3

  • 问题内容: 我正在尝试使用杂志api获取以下json内容。json的输出是这样的。我希望下面的json转换为php数组。 我的代码如下所示。 上面的代码返回一个空数组。:(如何将上述JSON转换为php对象数组。我很无奈。 谢谢哈恩 问题答案: 您提供的JSON示例无效。使用此JSON验证程序http://jsonlint.com/在线进行检查。您需要删除第59行上的多余逗号。 一个拥有有效jso

  • 问题内容: 我有一个通过jQuery AJAX调用的PHP脚本。我希望PHP脚本将JSON格式的数据返回给javascript。这是PHP脚本中的伪代码: 基本上,我需要将两个for循环的结果插入$ json中。 问题答案: Php具有内置的JSON序列化功能。 json_encode *如果可以并且不会遭受“此处未发明”综合症, *请 使用它。

  • 问题内容: 是否可以通过json_encode对这个php数组进行JSON转换?因为这个php数组被调用,当我做.. 在JavaScript中,它给了我错误。我想知道JSON可以/不能做什么类型的php数组是否有限制。 问题答案: 首先,您需要在安装了PHP的Apache服务器上的一个PHP文件。制作如下文件: 然后是您的JavaScript(在此示例中,我使用jQuery): 这应该是开始将PH

  • 问题内容: 因此,我需要通过php查询数据库,然后将查询转换为.json文件以使用Google图表。 我如何通过PHP将mysql查询转换为.json文件,如下所示: PS:此示例引自Google 问题答案: 您可以使用功能。 从数据库获取数据并将其分配给数组 然后使用。这将产生json结果。点击这里 使用功能将json结果保存到您的.json文件 以下是示例代码,

  • 问题内容: 我有一个通过jQuery AJAX调用的PHP脚本。我希望PHP脚本将JSON格式的数据返回给javascript。这是PHP脚本中的伪代码: 基本上,我需要将两个for循环的结果插入$ json中。 问题答案: Php具有内置的JSON序列化功能。 json_encode *如果可以并且不会遭受“此处未发明”综合症, *请 使用它。