谷歌图表MySQL结果

时间:2018-05-22 17:48:24

标签: mysql charts google-visualization

我正在尝试使用Google图表显示查询结果。 这是php部分:

<?php

include('db.php');

$mysqli = SQLConnect();
$myArray = array();

$sql = "select id, rating from ratings order by RateDate DESC limit 5";

if ($result = $mysqli->query($sql)) {
    while($row = $result->fetch_assoc()) {
            $myArray[] = $row;
    }
    echo json_encode($myArray);
}
$result->close();
$mysqli->close();
?>

这是我尝试使用它的实际部分:

  google.charts.load('current', {'packages':['corechart']});    
  google.charts.setOnLoadCallback(drawChart1);

  function drawChart1() {

    var options = {
      title: 'Last 5 Ratings',
      height: 400,
      legend: { position: 'bottom' }
    };

    var jsonData = $.post({

      url: '../resources/db/getDataForChart1.php',
      dataType:"json",
      async: false,
      success: function(jsonData){
        var data = new google.visualization.arrayToDataTable(jsonData);

        var chart = new google.visualization.BarChart(document.getElementById('lastEvaluations'));
        chart.draw(data, options);

      }
    }).responseText;
  }

作为arrayToDatabaseTable函数的错误,我得到:

Uncaught Error: First row is not an array.

这应该意味着php脚本提取的数组格式不正确,但是查看他们的文档我不知道它有什么问题。

有人可以启发我吗?

1 个答案:

答案 0 :(得分:0)

$row最有可能作为对象{}而不是数组[]

while语句中,创建一个新数组并添加结果中的每个值 然后将新数组添加到$myArray

while($row = $result->fetch_assoc()) {
    $rowArray = array();
    $rowArray[] = $row["id"];
    $rowArray[] = $row["rating"];
    $myArray[] = $rowArray;
}

另外,arrayToDataTable期望第一个数组是列标签,
除非第二个参数是true,否则第一行是数据

所以,您需要添加列标签......

$rowArray = array();
$rowArray[] = "id";
$rowArray[] = "rating";
$myArray[] = $rowArray;
while($row = $result->fetch_assoc()) {
    $rowArray = array();
    $rowArray[] = $row["id"];
    $rowArray[] = $row["rating"];
    $myArray[] = $rowArray;
}

或将第二个参数设置为true ...

var data = google.visualization.arrayToDataTable(jsonData, true);

注意:arrayToDataTable是一种静态方法,不应使用new关键字...