使用JSON从PHP到Javascript的MySQL数据
我试图使用一个代码,从mySQL数据库获取数据,将数据绑定到一个变量,将所有生成的$x放入一个PHP数组,最后将其转换为JSON格式。然后,我将JSON转换成javascript来处理数据库中的数据 请查看我的代码:使用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("
<?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 )
);
?>