php - 匹配表单中的多个列

标签 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   | 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...

我不知道如何执行该查询...我可以一一匹配表单中的输入,但我必须进行许多查询...实际上有四个查询...我很乐意简化了我的查询,以根据用户的请求从价格列中获取该值...

另一件事是在第一个查询中使用switch case : value...或使用if、elseif .... r 只是IF ...那是因为我知道用户将从表单中选择的值,并且表单只有 4 个选择...每个“列”名称、颜色、类别和年份都有一个选择

您可能认为我希望您为我执行此操作...是的,也不是...是的,因为我想学习如何执行此类查询,而否,因为我使用 IF 进行组合,但没有数据基地...我想使用数据库...

if ($name == 'bmw' && $color == 'red' && [...]) {
     $price = 1200;
} [...] and so on...

大约 23 个 elseif {} ...

感谢您抽出时间分享您对此想法的想法...

<小时/>

** 编辑 **

到目前为止,我有两个很好的答案,并且我正在使用这两个答案,因此我在选择正确的答案时遇到了一些麻烦......

Mahmoud Gamal and Rajesh Paul

所以我打算再保留几天,无论哪一个获得更多选票(如果有的话),这就是我要选择的......

谢谢。

最佳答案

如果是为了减少查询长度,那么我建议这样做-

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

仅对属性集进行分组,而不是使用 ANDOR 级联条件,这肯定会减少查询的长度。

关于php - 匹配表单中的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727716/

相关文章:

php - 在一定时间内显示DIV

php - MySQL数据库+时间戳/PHP

php - 从php和mysql如何在html文件中加载和插入数百万条记录

php - 使用 count 函数确定 if 语句中显示的内容

php - OOP 问题停止 PHP 运行和 MySQL 数据数组检索问题

PHPSpreadsheet:如何获取加载的行数?

mysql - ActiveRecord 回调还是 MySql 触发器?

php - 减少 Foreach 嵌套并替换为 While 循环?

php - {} 在 MySQL 查询中做什么?

php - 如何将当前年份作为 php 函数中的默认参数传递