D3 javascript从mysql中取出数据Uncaught typeError

时间:2016-03-30 19:18:21

标签: 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);

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

然后我用我生成的前一个json文件运行这个html

d3.json("mypreviouslygeneratedjson.json", function (error, data) {

    data.forEach(function (d) 
    {
        ...
    }
...

一切顺利,我可以生成条形图,饼图等。但是只要我用这一行替换3 fopen,fwrite和fclose行:

echo json_encode($data);

(加上我用之前提到的php文件替换“mypreviouslygeneratedjson.json”)

一旦我尝试这样做,我在控制台中出现错误:

  

未捕获的TypeError:无法读取未定义

的属性'forEach'

这里发生了什么?我几乎在两种情况下使用相同的json。

1 个答案:

答案 0 :(得分:0)

问题是我的php文件生成的json包含以下mysql警告:

  

不推荐使用:mysql_connect():不推荐使用mysql扩展   将来将被删除:使用mysqli或PDO代替

这导致用html填充我的json文件,使d3.json无法读取