获取在MySQL中找到数据的列名

时间:2012-09-20 05:33:06

标签: php mysql pdo

是否可以获取列名称,其中找到特定数据而不通过结果循环,可能是PDO?或者在mySQL中有另一种方法吗?

示例仅显示3列,但对于我的表格,我最多可能需要检查30列

如果我有一个表table1并想找到找到'x'的列

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

currentyl我运行Select then循环到每一行,如果数据是'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
}

谢谢

1 个答案:

答案 0 :(得分:5)

试试这个:

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