D3 javascript从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从mysql数据库获取数据:

<?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);