首页 > 解决方案 > 如何在不知道列名的情况下从 mysql 查询中检索表行?

问题描述

如何在不知道列名的情况下从 mysql 查询中检索表行?

现在我有一个名为date的已知列,而其他列不知道,因为它是一个数据透视表。

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'count(case when categoryID = ''',
      categoryID,
      ''' then value end) AS `',
      categoryID, '`'
    )
  ) INTO @sql
FROM  points;

SET @sql = CONCAT('SELECT date, ', @sql, ' 
                  FROM points 
                  GROUP BY date');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

结果:

在此处输入图像描述

php代码:

<?php
$con = mysqli_connect('localhost','root','','mypointsdb');
$query= "the above query"
$exc = mysqli_query($con, $query);
$result=[];
while($row -> mysqli_fetch_array($exc)){
$result[]= $row;
}
?>

现在我想让没有列名的表行是这样的

[2018-01-10, 0,0,0,0,1,0]
[2018-10-11, 0,0,0,0,1,0]
[2018-11-04, 1,0,1,0,1,0]
[2018-11-05, 0,0,0,1,1,3]
... etc

标签: phpmysql

解决方案


要将数据作为简单数组获取,您可以使用mysqli_fetch_row()而不是mysqli_fetch_array(). 所以你的代码可能是这样的:

<?php
$con = mysqli_connect('localhost','root','','mypointsdb');
$query= "the above query"
$exc = mysqli_query($con, $query);
$result=[];
while($row = mysqli_fetch_row($exc)){
   $result[]= $row;
}
?>

推荐阅读