2012-09-20 29 views
1

是否可以在沒有循環結果(可能是PDO)的情況下獲取特定數據的列名?還是有另一種方式在mySQL中做到這一點?獲取在MySQL中找到數據的列名稱

的例子只顯示3列,但對於我的表我最多可以有30列必須檢查

,如果我有一個表,表1,想找到列(S)其中「x」是發現

+----+------+------+------+ 
| id | Col1 | Col2 | Col3 | 
+----+------+------+------+ 
| 0 | x | b | x | 
| 1 | x | x | f | 
| 2 | d | x | g | 
| 3 | h | j | k | 
+----+------+------+------+ 

currentyl我運行一個選擇,然後循環到各行,檢查各行的列數據是否是「X」

$query= "SELECT * FROM table1 WHERE (Col1='x' OR Col2='x' OR Col3='x')" 
$result=mysql_query($query); 
$foundCols = array(); 
$rowCnt = 0; 
while ($row = mysql_fetch_assoc($result)) { 
    $tmpArr = array(); 
    if ($row['Col1'] == 'x') { 
    $tmpArr[] = 'Col1'; 
    } 
    if ($row['Col2'] == 'x') { 
    $tmpArr[] = 'Col2'; 
    } 
    if ($row['Col3'] == 'x') { 
    $tmpArr[] = 'Col3'; 
    } 
    $foundCols[$rowCnt] = $tmpArr; 
    $rowCnt = $rowCnt+1 
} 

謝謝

回答

5

試試這個:

while ($row = mysql_fetch_assoc($result)) { 
    ... 
    foreach (array('Col1', 'Col2', 'Col3') as $key) { 
     if ($row[$key] == 'x') { 
      $tmpArr[] = $key; 
     } 
    } 
    ... 
} 
+0

感謝佩塔提克瓦,很好的解決方案,如果是管理的..雖然這仍然將循環每個列 – Aries

+0

@Aries不管什麼解決方案(如內部PHP(C)的功能,或MySQL調用),你會發現它會有一個循環。 – Petah

+0

當然循環可能無法避免,但使用foreach表中的所有列也將檢查其他字段,如「ID」,如果我確實有額外的列,其中X無效,我仍然會檢查其值。 – Aries