[英]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.