PHP MySQL获取结果以及表的列名

时间:2013-10-31 19:44:17

标签: php mysql sql pivot-table

我一直在获取数据库的结果,但从不获取列名,现在我遇到了我需要列名和结果的情况。

我有一个简单的代码,显示列名称,并在其旁边显示结果为= 1的结果。

所以让我们说我的桌子看起来像这样

  |  Science  |   Maths   |   Biology   |   English   |
---------------------------------------------------------
  |     1     |     0     |     0       |      1      |

所以基本上我要找的是像

Table Name       |      Results
---------------------------------
Science          |          1
English          |          1

我在网上搜索并找到了INFORMATION_SCHEMA.COLUMNS的用法,但这似乎并不像我想要的那样工作。我不知何故需要包括INFORMATION_SCHEMA.COLUMNS以及select * WHERE user = $ user kinda stuff。

我的方法。

 $i = 0;

$result = mysql_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'trophy' WHERE UPPER(username) = UPPER('$searchuser')");
    while($row = mysql_fetch_array($result))
{
    echo $row['COLUMN_NAME'];
    echo '-'
    echo $row[$i];
    $i++;
}

2 个答案:

答案 0 :(得分:1)

解决此问题的最佳方法可能是获取关联数组并使用其键。从您的示例看,您似乎总是希望获得1个结果行,但为了防止出现问题,我将添加LIMIT 1。你可以这样做:

$result = mysql_query("SELECT * FROM trophy WHERE username = '$searchuser' LIMIT 1");
$result = mysql_fetch_assoc($result);
foreach ($result as $name => $value)
  echo $name . '-' . $value;

请注意,mysql_*函数已弃用。您应该使用mysqli_*PDO代替。您可以比较它们here

答案 1 :(得分:0)

while ($row = mysql_fetch_array($result, **MYSQL_BOTH**)) {
    printf ("ID: %s  Name: %s", $row[0], $row["name"]);
}

http://php.net/manual/en/function.mysql-fetch-array.php