Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为柱状图创建动态数据表(未知列和行)_Php_Mysql_Google Visualization - Fatal编程技术网

Php 为柱状图创建动态数据表(未知列和行)

Php 为柱状图创建动态数据表(未知列和行),php,mysql,google-visualization,Php,Mysql,Google Visualization,我正在寻找一个循环,该循环从MySQL结果集中检索具有未知数量的列和行的数据,并将其置于GViz格式。 使用以下代码,我可以动态读取数据,但无法将其转换为Google Visualization API所需的格式: $cols = array(); $row = array(); $i = 0; while ($i < mysql_num_fields($result)) { $meta = mysql_fetch_field($result, $i); if (!$meta) {

我正在寻找一个循环,该循环从MySQL结果集中检索具有未知数量的列和行的数据,并将其置于GViz格式。 使用以下代码,我可以动态读取数据,但无法将其转换为Google Visualization API所需的格式:

$cols = array();
$row = array();
$i = 0;
while ($i < mysql_num_fields($result)) {
$meta = mysql_fetch_field($result, $i);
    if (!$meta) {
    echo "No information available<br />\n";
    }

    $cols[]= "{id: '".$i."', label: '".$meta->name."', type: '".$meta->type."'}";
    $i++;
    }

while($r = mysql_fetch_assoc($result)) {
$row[]= $r;
}

$jsonTable = json_encode($cols);
$jsonTable2 = json_encode($row);
$Table3 = "{cols: {$jsonTable}, rows: $jsonTable2}";

echo $jsonTable;
     echo '<br>';

echo $jsonTable2;
     echo '<br>';

echo $Table3;
     echo '<br>';
$cols=array();
$row=array();
$i=0;
而($i\n”;
}
$cols[]=“{id:'”“$i.”,标签:“$meta->name.”,类型:“$meta->type.”;
$i++;
}
而($r=mysql\u fetch\u assoc($result)){
$row[]=$r;
}
$jsonTable=json_encode($cols);
$jsonTable2=json_encode($row);
$Table3=“{cols:{$jsonTable},行:$jsonTable2}”;
echo$jsonTable;
回声“
”; echo$jsonTable2; 回声“
”; 表3; 回声“
”;
我在调试模式下从浏览器中得到的JS错误是:

错误:列“0”的类型无效,{[id='0',label='mon',type='string']}

我看过谷歌的文档,但他们的数据还是像往常一样硬编码的。And-page不会动态生成列和行


我很高兴在正确获取数据参数方面得到任何帮助。谢谢

您看到的错误的原因是您的JSON字符串构造错误。不要试图自己构建它们,在PHP中构建数组并允许
json_encode
函数为您处理困难的部分要容易得多

您可以将MySQL中的数据解析为如下数据表:

$data = array(
    'cols' => array(),
    'rows' => array()
);
for ($i = 0; $i < mysql_num_fields($result), $i++) {
    $meta = mysql_fetch_field($result, $i);
    if (!$meta) {
        echo "No information available<br />\n";
    }
    $data['cols'][] = array(
        'type' => ($i == 0) ? 'string' : 'number',
        'label' => $meta->name,
        'id' => $i
    );
}
while($r = mysql_fetch_assoc($result)) {
    $temp = array();
    foreach ($data['cols'] as $col) {
        $temp[] = array('v' => $r[$col['label']]);
    }
    $data['rows'][] = array('c' => $temp);
}
echo json_encode($data, JSON_NUMERIC_CHECK);
$data=array(
'cols'=>array(),
“行”=>array()
);
对于($i=0;$i\n”;
}
$data['cols'][]=数组(
'type'=>($i==0)'string':'number',
'label'=>$meta->name,
'id'=>i美元
);
}
而($r=mysql\u fetch\u assoc($result)){
$temp=array();
foreach($data['cols']作为$col){
$temp[]=数组('v'=>$r[$col['label']]);
}
$data['rows'][]=array('c'=>$temp);
}
echo json_encode($data,json_NUMERIC_CHECK);

您知道哪些数据类型将提前发布吗?
$meta->name
应该是列名吗?是的,第一列必须设置为字符串,下面的列必须设置为数字。@asgallant:是的,表名应该是列名。