我正在使用Google图表创建折线图。然而,在JavaScript部分,我尝试将我的PHP变量传递到数组中,但我收到了一条错误消息,内容是:
没有提供足够的列来绘制请求的图表。
我的代码:
<!-- Google Charts -->
<div id="chart_line_graph" style="width: 100%; height: 400px; margin: 0 auto;"></div>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<?
$titleArray = array(
'Week'
);
$count = 0;
//Get all headers
$query = 'SELECT `keyword` FROM `'.$tableName.'` ORDER BY `keyword`';
$results = mysqli_query($conn, $query);
while($row = mysqli_fetch_assoc($results)){
if($count < 5) //Get first 5 keywords
$titleArray[] = $row['keyword'];
$count++;
}
$data = array();
$data[] = json_encode($titleArray);
foreach($columns as $column){
$weekData = array();
$weekData[] = "'".$column."'";
$query = 'SELECT `'.$column.'` FROM `'.$tableName.'` ORDER BY `keyword`';
$results = mysqli_query($conn, $query);
$count = 0;
while($row = mysqli_fetch_assoc($results)){
if($count < 5)
$weekData[] = (Integer)$row[$column];
$count++;
}
$data[] = json_encode($weekData);
}
?>
<script>
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
<?php
foreach($data as $weekData){
echo $weekData.',';
}
?>
],false);
var options = {
title: '<?echo ucwords($_SESSION['clientName']);?> Keywords',
curveType: 'function',
legend: { position: 'right' }
};
var chart = new google.visualization.LineChart(document.getElementById('chart_line_graph'));
chart.draw(data, options);
}
</script>
每次运行它时,我都会收到相同的错误消息。我试着输出结果,并将其直接复制粘贴到JavaScript中,然后创建了图形。
有什么想法为什么不起作用吗?
编辑:
数据:
["Week","aker aberdeen","alma tavern","ancillary items","baby change sign","baby change units"],
["10_12_2015",36,11,37,30,48],
["17_12_2015",36,10,35,27,43],
["24_12_2015",26,11,35,26,44],
["31_12_2015",29,11,32,23,42],
我想明白了。出于某种原因,mysqli无法正常工作。我把它从程序化的方式改为面向对象的方式,一切都奏效了。我不知道为什么会这样,我只知道它有效。