Php 匹配表单中的多个列

Php 匹配表单中的多个列,php,mysql,Php,Mysql,我正在做一个价格表,我想知道是否有一种方法可以根据表单中的值匹配多个具有不同值的列。。。请允许我 Table: Price id | name | color | class | year | price ________________________________________ 1 | BMW | Red | XML | 2001 | 1200 2 | BMW | Red | XML | 2003 | 1201 3 | BMW | Blue | LXX

我正在做一个价格表,我想知道是否有一种方法可以根据表单中的值匹配多个具有不同值的列。。。请允许我

Table: Price
id | name | color | class | year | price
________________________________________
1  | BMW  | Red   | XML   | 2001 | 1200
2  | BMW  | Red   | XML   | 2003 | 1201
3  | BMW  | Blue  | LXX   | 2004 | 1230
4  | VW   | Red   | LXS   | 2001 | 1100
5  | VW   | Blue  | LXV   | 2003 | 1103
基本上我的表是这样的,想法是通过匹配四列得到价格值。。。 如果名称为bmw,颜色为红色,类别为xml,年份为2001,则价格为1200

我该怎么问呢?。。。我还没有这类查询的代码。。。但我想根据第一个值进行一些查询

SELECT * FROM price 
WHERE name = '$user_query' AND (color = 'Red' OR class = 'XML' )
if [...] ... that just wont work...
我不知道怎么做那个查询。。。我可以一个接一个地匹配表单中的输入,但我必须进行许多查询。。。实际上有四个问题。。。我想简化我的查询,根据用户的请求从price base列中获取该值

另一件事是使用switch case:来自第一个查询的值。。。或者使用if,elseif。。。。r只是如果。。。这是因为我知道用户将从表单中选择的值,而表单只有4个选择。。。每列名称、颜色、类别和年份各一个

你可能认为我想让你为我做这件事。。。是的,不是的。。。是的,因为我想学习如何进行这种类型的查询;不是的,因为我有这样的组合,使用IF's,而没有数据库。。。我想用一个数据库

if ($name == 'bmw' && $color == 'red' && [...]) {
     $price = 1200;
} [...] and so on...
大约23埃尔塞夫{}

感谢您抽出时间分享您对这个想法的想法

**爱迪特**

到目前为止,我有两个很好的答案,我正在使用这两个答案,因此我在选择正确的答案时有点困难

马哈茂德·贾马尔和拉杰什·保罗

所以,我会像这样再多呆几天,如果有更多的选票,那就是我要选择的那个


谢谢。

您必须更换syntaxis

WHERE name = '$user_query' AND (color = 'Red' OR class = 'XML' )

WHERE name = '$user_query' AND color = 'Red' AND class = 'XML'

此处需要的是WHERE子句中的可选参数:


如果其中一个参数的值为空,则表达式将被忽略。

如果是关于减少查询长度,则我建议这样做-

SELECT * FROM price 
WHERE (name, color, class) = ('$user_query', 'Red', 'XML' );

只需对属性集进行分组,而不是使用AND级联条件,或者肯定会缩短查询的长度。

您好,您的意思是,我可以根据需要使用任意数量的属性集?我这样问是因为在我决定将IF改为SQL查询之前,我有另一个表的情况几乎相似,但在这种情况下,它是一个具有两个主值的单列。。所以查询不允许我使用多个和。。。从t中选择a,其中b='1'和c='1'或c='2'按d ASC排序,如下所示。。。但是如果我能用多个AND的话。。那我想我可以走了。。。我现在就做这张桌子,试试看。。。谢谢。@carner-对于另一个表,您可以使用@columnname为NULL或columnname=@columnname,方法相同。您只需要检查表单中的输入,如果它没有值,则将参数@foo设置为NULL,您就完成了。@进行得不是很顺利吗?对不起,我需要一些时间才能回来,我睡着了。。。是的,你的技术工作得很好,还有马哈茂德·加马尔的技术,有趣的是,我在同一个文件中有两个不同目的的查询,一个我使用你的技术,另一个我使用马哈茂德的技术。。。但有一个问题,你更喜欢使用哪一个,$\u GET还是$\u POST。。。谢谢你…通常情况下,$\u用于表单提交。据我所知,我认为你需要一种简单的方法来编写查询。但现在它觉得级联条款,即AND或or可能会有所不同。我的实现基于和的使用。你需要什么,我说得对吗?
SELECT * FROM price 
WHERE (name, color, class) = ('$user_query', 'Red', 'XML' );