我正在尝试使用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脚本提取的数组格式不正确,但是查看他们的文档我不知道它有什么问题。
有人可以启发我吗?
答案 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
关键字...