使用JSON从PHP到Javascript的MySQL数据

使用JSON从PHP到Javascript的MySQL数据,javascript,php,mysql,arrays,json,Javascript,Php,Mysql,Arrays,Json,我试图使用一个代码,从mySQL数据库获取数据,将数据绑定到一个变量,将所有生成的$x放入一个PHP数组,最后将其转换为JSON格式。然后,我将JSON转换成javascript来处理数据库中的数据 请查看我的代码: <?php //bind to $x $mysqli = new mysqli('localhost', 'root', 'root', 'mytable'); if ($stmt = $mysqli->prepare("

我试图使用一个代码,从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); 
        }

var-xv=;
var-yv=;
var存储=[];

对于(var i=0;i,在这些行中,您有错误的代码:

var xv = "<?php echo $json_array; ?>";
var yv = "<?php echo $json_array2; ?>";
在这些行之后,您试图从
中的数组中获取值,但是
xv
xz
变量不是对象的类型,它们是字符串。而不是这样做:

var xv = "[...smth]";
var xv = <?=$json_array;?>;
var yv = <?=$json_array2;?>;
var xv=;
var-yv=;

因为您使用了json\u编码,所以xv和yv是一个字符串

您可以使用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); 
}
var xv=”“;
xv=JSON.parse(xv);
var yv=“”;
yv=JSON.parse(yv);
var存储=[];

对于(var i=0;i首先:如果在输出中看到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文件采用更优化的方法:

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


这将利用mysql nd模块执行所有工作,将完整结果集提取为关联数组,并将其编码为几行。

您有什么问题吗?由于x和y都来自同一个表,请执行
选择x,y….
并在一个查询中完成所有操作从
var xv=“”中删除引号
这是一个javascript对象,所以做
var xv=;
好吧,我做了这些更改,并编辑了一个问题:我的问题是什么?问题仍然存在。我无法理解为什么它将代码显示为输出。我认为这似乎是错误的,$x和$y在这里应该有值$stmt->bind_result($x);在这里是$stmt->bind_result($y);谢谢你的回答,我做了修改,但是问题仍然存在,所以我调查了一下,发现行中有语法错误。var xv=;var yv=;好的,我实现了这个编辑,输出结果似乎仍然与问题中描述的相同。谢谢,我现在将尝试解决所有问题。
[{x:'x1':y:'y1'},{x:'x2',y:'y2'},...]
<?php
    $mysqli = new mysqli('localhost', 'user', 'pass', 'db');
    echo json_encode(
       $mysqli->query("SELECT x,y FROM table")->fetch_all( MYSQLI_ASSOC )
    );
?>