D3 javascript从mysql提取数据未捕获类型错误
我目前正在使用以下php从mysql数据库获取数据:D3 javascript从mysql提取数据未捕获类型错误,javascript,php,mysql,json,d3.js,Javascript,Php,Mysql,Json,D3.js,我目前正在使用以下php从mysql数据库获取数据: <?php $username = "*****"; $password = "******"; $host = "localhost"; $database="db"; $server = mysql_connect($host, $username, $password); $connection = mysql_select_db($database, $server);
<?php
$username = "*****";
$password = "******";
$host = "localhost";
$database="db";
$server = mysql_connect($host, $username, $password);
$connection = mysql_select_db($database, $server);
$myquery = "
SELECT `this`, `that` FROM `table`
";
$query = mysql_query($myquery);
if ( ! $query ) {
echo mysql_error();
die;
}
$data = array();
for ($x = 0; $x < mysql_num_rows($query); $x++) {
$data[] = mysql_fetch_assoc($query);
}
$fp = fopen('empdata.json', 'w');
fwrite($fp, json_encode($data));
fclose($fp);
mysql_close($server);
?>
一切进展顺利,我可以生成条形图、饼图等,但只要我用这一行替换3个fopen、fwrite和fclose行:
echo json_encode($data);
(另外,我用前面提到的php文件替换了“MyPreviousGeneratedJSON.json”)
尝试执行此操作时,控制台中会出现一个错误:
未捕获的TypeError:无法读取未定义的属性“forEach”
这是怎么回事?我实际上在这两种情况下都使用相同的json。问题是,我的php文件生成的json包含以下mysql警告: 已弃用:mysql\u connect():mysql扩展已弃用,并且 将来将被删除:请改用mysqli或PDO
这导致用html填充我的json文件,使其无法被d3.json读取。您尝试了控制台记录数据吗?@thisonegoy当我控制台记录d3.json中的数据时,我什么也得不到。当我运行php时,数据会在网页上得到回响。将数据传递给变量,然后在运行php时将变量设置为新数据如何?然后就去掉d3.jsonline@thisOneGuy我该怎么做?我对php和php/js的组合还很陌生,我还没有用过php,但我猜你只是把返回的数据附加到一个变量上,然后把这个变量传递给D3。我建议有一个更新功能来运行你的D3可视化,这样你就可以随时用新数据来更新它。查看D3 enter()和exit(),或者在google上查看使用新数据更新D3布局:)
echo json_encode($data);