2013-10-31 58 views
0

我一直在獲取數據庫的結果,但從來沒有列名,現在我有一種情況,我需要列名和結果在一起。PHP MySQL獲得結果以及表名的列名

我有一個簡單的代碼,顯示列名和與其相鄰的顯示結果,其中結果= 1

所以我們可以說我的表是這樣看

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

所以基本上什麼我期待的是一樣的東西

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

我在網上搜索了一圈,發現INFORMATION_SCHEMA.COLUMNS的使用,但似乎並不在我想它的工作方式 至。我不知何故需要包括INFORMATION_SCHEMA.COLUMNS以及選擇* WHERE用戶= $用戶有點東西。

我的方法。

$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++; 
} 
+0

你想做一個像MS Access交叉查詢嗎?這是什麼http://stackoverflow.com/questions/1526688/get-table-column-names-in-mysql? – daremachine

回答

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

+0

+1指出'mysql_ *'棄用! – nietonfir

+0

的確,謝謝,我知道mysqli。但我要找的是能夠將列名放入數組 ,所以我可以使用$ row ['COLUMN_NAME']; – Crays