Google表格图表问题与包含LIMIT的查询

时间:2019-05-21 09:10:31

标签: php mysql google-visualization

尝试使用google table charts可视化某些数据时遇到问题。我的数据源是mysql db,而用于连接到数据库并获取数据的php代码是standard php code(请参阅示例/部分,名为“ PHP-PDO-JSON-MySQL-Google”)。 mysql db和php均在VPS上运行。当我在查询中使用LIMIT时,会出现奇怪的行为。具体来说,只有当LIMIT x的x <= 5时,我才能显示表格:

确定

   from selenium.webdriver.common.action_chains import ActionChains
   actions = ActionChains(driver)
   actions.click(item)
   actions.perform()

不好

$result_RTI_VS_W_TABLE = $conn->query("SELECT * FROM `video_series_rank_week` ORDER BY `Year` DESC, `WeekN` DESC, `Rank` ASC LIMIT 5");

请注意,使用LIMIT 8的查询可以在phpmyadmin上正常工作。因此,数据存在。在一些实验中,我还注意到带有不同LIMIT语句以可视化google line charts的查询似乎可以正常工作。在我看来,这应该是表格图表而不是查询的问题。另外,相同的代码也可以在我的旧VPS上运行。

有什么主意为什么我得到这个奇怪的输出?

代码:

$result_RTI_VS_W_TABLE = $conn->query("SELECT * FROM `video_series_rank_week` ORDER BY `Year` DESC, `WeekN` DESC, `Rank` ASC LIMIT 8");

请求其他信息

  <head>

        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript">

        // Load the Visualization API and the table package.
        google.charts.load('current', {'packages':['table']});
        google.charts.setOnLoadCallback(drawTable);

        function drawTable() {

          // Create our data table out of JSON data loaded from server.
          var data_RTI_VS_W_TABLE = new google.visualization.DataTable(<?=$jsonTable_RTI_VS_W_TABLE?>);

          // Instantiate and draw our chart, passing in some options.
          // Do not forget to check your div ID
          var table_RTI_VS_W_TABLE = new google.visualization.Table(document.getElementById('table_div_RTI_VS_W_TABLE'));
          table_RTI_VS_W_TABLE.draw(data_RTI_VS_W_TABLE, {showRowNumber: false, width: '100%', height: '100%'});
        }
        </script>

  </head>

更新

经过其他一些实验,我发现我的问题与“系列名称”字段的字符串性质严格相关,即

<?php

    try {
      /* Establish the database connection */
      $conn = new PDO("mysql:host=localhost;dbname=$dbname", $username, $password);
      $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

      /* select relevant info for table googlechart */
      $result_RTI_VS_W_TABLE = $conn->query("SELECT * FROM `video_series_rank_week` ORDER BY `Year` DESC, `WeekN` DESC, `Rank` ASC LIMIT 8");

      $rows_RTI_VS_W_TABLE = array();
      $table_RTI_VS_W_TABLE = array();
      $table_RTI_VS_W_TABLE['cols'] = array(

        /* Labels for your chart, these represent the column titles */
        array('label' => 'Rank', 'type' => 'number'),
        array('label' => 'Year', 'type' => 'string'),
        array('label' => 'WeekN', 'type' => 'number'),
        array('label' => 'Series Name', 'type' => 'string'),
        array('label' => 'Total Historical Constrained Ad Avails', 'type' => 'number')
    );
        /* Extract the information from $result */
        foreach($result_RTI_VS_W_TABLE as $r_RTI_VS_W_TABLE) {

        $temp_RTI_VS_W_TABLE = array();

       /* the following line will be used to get a table */
        $temp_RTI_VS_W_TABLE[] = array('v' => (int) $r_RTI_VS_W_TABLE['Rank']);

       /* Values */
        $temp_RTI_VS_W_TABLE[] = array('v' => (string) $r_RTI_VS_W_TABLE['Year']);
        $temp_RTI_VS_W_TABLE[] = array('v' => (int) $r_RTI_VS_W_TABLE['WeekN']);
        $temp_RTI_VS_W_TABLE[] = array('v' => (string) $r_RTI_VS_W_TABLE['Series Name']);
        $temp_RTI_VS_W_TABLE[] = array('v' => (int) $r_RTI_VS_W_TABLE['Total Historical Constrained Ad Avails']);

        $rows_RTI_VS_W_TABLE[] = array('c' => $temp_RTI_VS_W_TABLE);}

        $table_RTI_VS_W_TABLE['rows'] = $rows_RTI_VS_W_TABLE;

    /* convert data into JSON format */
    $jsonTable_RTI_VS_W_TABLE = json_encode($table_RTI_VS_W_TABLE);
    } catch(PDOException $e) {echo 'ERROR: ' . $e->getMessage();}
    ?>

这就像Google表格无法在第5行之后显示该列。如果确实删除了该列,我将不再有任何问题。想法???

先谢谢了。

Drigo

已解决 我必须添加:

array('label' => 'Series Name', 'type' => 'string')

我的新PDO。

array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")

0 个答案:

没有答案