0

我正在尝试选择文本输入中的值等于的列,我正在从输入中返回一个值并可以回显它。但是我无法进行搜索并回显该值所在的列。我需要能够回显该值所在的列名,如果它在多个列中,则为多个。任何帮助表示赞赏。

 $skw = $_POST['k'];
    if(isset($_POST['k'])){
    $connect = mysql_connect('*', '*', '*')or die('Could not execute command. Please contact a administrator.');
    mysql_select_db('*')or die('No database');
    $query = "SELECT * FROM *TABLE*
    WHERE A1 LIKE '%$skw%' 
    OR B1 LIKE '%$skw%' 
    OR C1 LIKE '%$skw%' 
    OR D1 LIKE '%$skw%' 
    OR E1 LIKE '%$skw%' 
    OR F1 LIKE '%$skw%' 
    OR G1 LIKE '%$skw%' 
    OR H1 LIKE '%$skw%' 
    OR I1 LIKE '%$skw%' 
    OR J1 LIKE '%$skw%'
    OR A2 LIKE '%$skw%' 
    OR B2 LIKE '%$skw%' 
    OR C2 LIKE '%$skw%' 
    OR D2 LIKE '%$skw%' 
    OR E2 LIKE '%$skw%' 
    OR F2 LIKE '%$skw%' 
    OR G2 LIKE '%$skw%' 
    OR H2 LIKE '%$skw%' 
    OR I2 LIKE '%$skw%' 
    OR J2 LIKE '%$skw%'
    OR A3 LIKE '%$skw%' 
    OR B3 LIKE '%$skw%' 
    OR C3 LIKE '%$skw%' 
    OR D3 LIKE '%$skw%' 
    OR E3 LIKE '%$skw%' 
    OR F3 LIKE '%$skw%' 
    OR G3 LIKE '%$skw%' 
    OR H3 LIKE '%$skw%' 
    OR I3 LIKE '%$skw%' 
    OR J3 LIKE '%$skw%'
    OR A4 LIKE '%$skw%' 
    OR B4 LIKE '%$skw%' 
    OR C4 LIKE '%$skw%' 
    OR D4 LIKE '%$skw%' 
    OR E4 LIKE '%$skw%' 
    OR F4 LIKE '%$skw%' 
    OR G4 LIKE '%$skw%' 
    OR H4 LIKE '%$skw%' 
    OR I4 LIKE '%$skw%' 
    OR J4 LIKE '%$skw%'
    OR A5 LIKE '%$skw%' 
    OR B5 LIKE '%$skw%' 
    OR C5 LIKE '%$skw%' 
    OR D5 LIKE '%$skw%' 
    OR E5 LIKE '%$skw%' 
    OR F5 LIKE '%$skw%' 
    OR G5 LIKE '%$skw%' 
    OR H5 LIKE '%$skw%' 
    OR I5 LIKE '%$skw%' 
    OR J5 LIKE '%$skw%'
    OR A6 LIKE '%$skw%' 
    OR B6 LIKE '%$skw%' 
    OR C6 LIKE '%$skw%' 
    OR D6 LIKE '%$skw%' 
    OR E6 LIKE '%$skw%' 
    OR F6 LIKE '%$skw%' 
    OR G6 LIKE '%$skw%' 
    OR H6 LIKE '%$skw%' 
    OR I6 LIKE '%$skw%' 
    OR J6 LIKE '%$skw%'";
    $result = mysql_query($query)or die(mysql_error());
        while($data = mysql_fetch_row($result)){
     echo("<tr><td>$data[0]</td><td>$data[1]</td></tr>");
    }}
4

3 回答 3

0

您应该使用 show columns 来获取列名,检查下面的语法。

显示 [完整] 列 {来自 | IN} tbl_name [{FROM | IN} db_name] [LIKE '模式' | WHERE expr]

于 2013-09-02T07:15:31.417 回答
0

使用 a UNION,其中每个子查询匹配一个列,并输出一个附加列,说明它匹配哪一列。

SELECT 'A1' AS Col, *
FROM Table
WHERE A1 LIKE '%$skw%'
UNION
SELECT 'B1' AS Col, *
FROM Table
WHERE B1 LIKE '%$skw%'
UNION
SELECT 'C1' AS Col, *
FROM Table
WHERE C1 LIKE '%$skw%'
...

如果一行在多列中匹配,它将在此结果中变成多行。

于 2013-09-02T07:18:56.230 回答
0

考虑规范化您的数据库,以便所有这些字段 A1 ... J6 都是单独的行:

mytable_fields:
* field_ref (foreign key to mytable)
* field_nr
* field_value

您的查询将变为:

SELECT field_nr, mytable.*
FROM mytable
INNER JOIN mytable_fields ON mytable.field_ref = mytable.id
WHERE field_value LIKE '%$skw%';

这是您可以判断哪个字段包含您正在搜索的值的唯一实用方法。

于 2013-09-02T07:07:35.190 回答