使用JSON将mysql数据加载到Highcharts折线图

时间:2015-06-07 09:23:18

标签: php mysql json highcharts linechart

我试图将数据从数据库导入折线图(Highcharts)。我的代码不起作用。

这是我的PHP代码:

<?php
require('../php/config.php');
        $con=mysqli_connect("localhost", "root", "ginnastica", "progetto");
// Check connection
if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }
        if(isset($_GET['src']))
        {   
        $records=array();
        $records =  select($mysqli,"SELECT Sesso AS name, Occupati AS data FROM occupazione WHERE Sesso='totale' AND Periodo LIKE '%2008'");
            $rows = array();
            $rows['name'] = 'Totale';
            while($r = mysql_fetch_assoc($records)) {
            $rows['data'][]=$r['data'];
            }
            return json_encode($rows);
        }
        else
            return json_encode(array('status' => 'error', 'details' => 'no src provided'));

    }
?>

似乎&#34; mysql_fetch_assoc&#34;不起作用。我的数组$ rows的输出id为:

{

    "name": "Totale"

}

没有一个名为&#34; data&#34;的元素。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

起初:

  1. 值得查看../php/config.php文件中的内容,因为该文件的内容可能会影响您提供的其他行的行为。
  2. occupazione表的结构和数据(至少几行数据)也值得一看,因为数据或结构也可以改变输出。
  3. {之后你遗漏了else,而@Moppo已经提及过了。{/ li>
  4. 警告mysql_fetch_assoc 自PHP 5.5.0起,此扩展已弃用,将来将被删除。相反,应该使用MySQLi或PDO_MySQL扩展。阅读更多php.net
  5. 在那之后再进行一些修复,我最终会以接近它的方式编写代码:

    <?php
    
    $con = mysqli_connect("localhost", "root", "ginnastica", "progetto");
    // Check connection
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    if (isset($_GET['src'])) {
        $records = $con->query("SELECT Sesso AS name, Occupati AS data FROM occupazione WHERE Sesso='totale' AND Periodo LIKE '%2008'");
        $rows = array();
        $rows['name'] = 'Totale';
        while ($r = $records->fetch_assoc()) {
            $rows['data'][] = $r['data'];
        }
        return json_encode($rows, JSON_NUMERIC_CHECK);
    } else {
        return json_encode(array('status' => 'error', 'details' => 'no src provided'));
    }
    

    正如我所说的,我们对你使用的数据库一无所知,所以我的猜测就是你的select不会返回任何行。然后你没有data(只有{"name": "Totale"}),只是因为while没有任何东西要迭代抛出。