1

是否有可能在不循环结果的情况下(可能通过 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 然后循环到每一行并检查每一行列,如果数据是'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
}

谢谢你

4

1 回答 1

5

尝试这个:

while ($row = mysql_fetch_assoc($result)) {
    ...
    foreach (array('Col1', 'Col2', 'Col3') as $key) {
        if ($row[$key] == 'x') {
            $tmpArr[] = $key;
        }
    }
    ...
}
于 2012-09-20T05:44:13.877 回答