在特定字段匹配时在php中查找mysql查询的列名

在特定字段匹配时在php中查找mysql查询的列名,php,mysql,Php,Mysql,我有一个查询,因此我正在搜索10列中的字段,例如 price_squery1 = "select * from table where table_category1 = '$category[0]' or table_category2 = '$category[0]' or table_category3 = '$category[0]' or table_category4 = '$category[0]' or table_category5 = '$category[0]'

我有一个查询,因此我正在搜索10列中的字段,例如

price_squery1 = "select * from table 
where table_category1 = '$category[0]' or 
table_category2 = '$category[0]' or 
table_category3 = '$category[0]' or 
table_category4 = '$category[0]' or 
table_category5 = '$category[0]' or 
table_category6 = '$category[0]' or 
table_category7 = '$category[0]' or 
table_category8 = '$category[0]' or 
table_category9 = '$category[0]' or 
table_category10 = '$category[0]'";
$price_sresult1 = mysql_query($price_squery1);

我想知道字段匹配了哪一列,而不使用for循环来搜索每一列。有没有办法直接找到匹配的列。我是sql新手,请帮助。

我真的不知道如何在sql中执行此操作,但您可以将搜索的值与每列返回的值与PHP进行比较

可能有多个列与该值匹配

$result = mysql_fetch_assoc(mysql_query($price_squery1);
if ($result['table_category1'] == $category[0])
    // found in category1
if ($result['table_category2'] == $category[0])
    // found in category2

我修改了前几个类别的查询,您可以添加更多的if语句来扩展它。

一些格式设置不会有任何影响。是的,有,它被称为。首先要了解这一点,使你们的关系正常化,然后回来再问一次,你们是否一开始就做了你们想做的事情。我知道这一点。。问题是我必须在不进行规范化的情况下工作,这样我就不必创建更多的表。我需要一种不正常化的方法
price_squery1 = "select 
if(table_category1 = '$category[0]', \'table_category1\',if(table_category2 = '$category[0]',\'table_category2\',if(table_category3 = '$category[0]',\'table_category3\',if(table_category4 = '$category[0]',\'table_category4\', None)))) matched_category
t.* from table t
where table_category1 = '$category[0]' or 
table_category2 = '$category[0]' or 
table_category3 = '$category[0]' or 
table_category4 = '$category[0]' or 
table_category5 = '$category[0]' or 
table_category6 = '$category[0]' or 
table_category7 = '$category[0]' or 
table_category8 = '$category[0]' or 
table_category9 = '$category[0]' or 
table_category10 = '$category[0]'";
$price_sresult1 = mysql_query($price_squery1);