繁体   English   中英

如何选择值等于的列?

[英]How to select column where value equals?

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

 $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>");
    }}

考虑规范化数据库,以便所有这些字段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%';

这是告诉您哪个字段包含要搜索的值的唯一实用方法。

您应该使用show column获取列名,请检查以下语法。

显示[FULL]栏{ IN} tbl_name [{FROM | IN} db_name] [喜欢'pattern'| 在哪里]

使用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%'
...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM