SQL喜欢没有列名(使用php)

时间:2015-11-29 00:43:17

标签: php sql

我需要从表的所有列中找到一个以特定值开头的结果,无论列是什么,并假设我不知道列的名称,如下所示:

$sql = "SELECT * FROM $myTable WHERE AllTheColumns LIKE '{$theValue}%'";

我知道在“WHERE”之后我必须指定列名,但任何其他解决方案都可以(如果存在)。

3 个答案:

答案 0 :(得分:3)

您可以先从表格中选择所有列名称:

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

//将结果列名存储在$ column_names var;

然后,使用列名称数组,创建一个循环,将每个列名添加到查询中:

$query = "SELECT * FROM $table_name WHERE ";

foreach($column_names as $i => $colname) {
  $query .= "$colname LIKE %$search_string% ";
  if ($i+1 < $column_names.length()) {
    $query .= " OR ";
  }
}

// do stuff with query

答案 1 :(得分:2)

还有其他任何方法可以做到。

SELECT * FROM $myTable 
    WHERE Column1 LIKE '%$search%' 
        OR Column2 LIKE '%$search%' 
        OR Column2 LIKE '%$search%'  
        OR Column3 LIKE '%$search%'

答案 2 :(得分:1)

可能有两种选择。

1)您可以获取所有列名并相应地执行操作。

2)您可以通过键入index来反映特定列。