Php 为什么我的SQL数据会导致我的图表';s Y轴跳到无穷远?

Php 为什么我的SQL数据会导致我的图表';s Y轴跳到无穷远?,php,drupal,drupal-modules,Php,Drupal,Drupal Modules,我一直在尝试在Drupal中使用OpenFlashChart2构建一个图形(这个问题与Drupal或图形和图表模块无关) 对于图,我从MySQL数据库获取数据。下面是获取数据并生成图形的函数: function my_module_charts_graphs_test() { global $user; $uname = $user->name; $sql = "Select total_calorie from health_calorie_consumed where name =

我一直在尝试在Drupal中使用OpenFlashChart2构建一个图形(这个问题与Drupal或图形和图表模块无关)

对于图,我从MySQL数据库获取数据。下面是获取数据并生成图形的函数:

function my_module_charts_graphs_test() {

 global $user;
$uname = $user->name;
$sql = "Select total_calorie from health_calorie_consumed where name = '%s'";
$result = db_query($sql,$uname);


  while($row = db_fetch_array($result))
{

    $data[] = $row[total_calorie];

}

$canvas = charts_graphs_get_graph('open-flash');

  $canvas->title = "OpenFlashCharts Chart";
  $canvas->type = "bar_3d";
  $canvas->y_legend = "Y Legend";
  $canvas->colour = '#808000';
  $canvas->width = 700;
  $canvas->height = 300;
  $canvas->y_max=1000;
  $canvas->y_min=0;
  $canvas->y_step=100;
  $canvas->series = array(
    'Some Value' => array(923,623,73,92,5,722,643,156,345),
    //'Page Views' => array_values($data),
  );
  $canvas->x_labels = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine');

  // $canvas->x_labels = array_values($data);

  $out = $canvas->get_chart();

  return $out;


} 
当我运行代码时,我得到下图:

因此,它与本地声明的数组完美结合。但是我需要使用SQL中的数组。因此,我取消注释并更改
$canvas->c_标签
$canvas->series

 $canvas->x_labels = array_values($data); //$data is array from sql query

'Page Views' => array_values($data)
现在,让我惊讶的是,我得到了下图:

正如我们所看到的,x_轴的值与查询结果一致,但y_轴的值与无穷大的值相同。为什么会这样

这个奇怪的问题还有另一面。起初,我认为这种方法可能不适用于
$canvas->series
,但我尝试了以下代码,效果非常好:

$array = array(0,0,117,207,130,260,207); //these values are that are fetched from sql
$canvas->series = array(
   'some values'=>array_values($array),
   );
所以这个“无穷大”问题只出现在从SQL查询获取的数组中,并且只出现在Y轴上

我的SQL的打印($data)如下所示:

Array ( [0] => 0 [1] => 0 [2] => 117 [3] => 207 [4] => 130 [5] => 260 [6] => 207 ) 
下面是我为$canvas->series尝试的一些其他组合,但失败了

$test = implode(",",$data); // $data is the array fetched from sql
$abcd = "array(".$test.")"; // array(0,0,117,207,130,260,207)

$canvas->series=>array(
      'some value'=>print($abcd), //i tried to print those values in standard format..:p
      );


因此,我尝试了我能想到的一切,但运气不佳。

尝试插入

 $data = array();
while($row=db\u fetch\u array($result))之前

并使用

 'Page Views' => $data

哇。。多亏了drupal论坛,我终于找到了答案:)

事实证明,这是一个典型的问题。。!i、 如果我使用下面的代码,它就可以工作了

<?php
$data[] = (int) $row[total_calorie];
?>


我不知道为什么这是一个类型问题。或者这是为什么有效,但它确实解决了我的问题。。。!谢谢大家帮我解决了问题。:)

没有起作用。:(显示了相同的“无穷大”图形。!!!谢谢你提供了一个更清晰的标题。:)奇怪的是,当我将脚本从Windows上传到Linux环境时,我也遇到了同样的问题。谢谢分享。这对我也有用!
 'Page Views' => $data
<?php
$data[] = (int) $row[total_calorie];
?>