PHP:使用选择选项过滤 SQL 查询 [英] PHP: Filtering SQL query with select options

查看:47
本文介绍了PHP:使用选择选项过滤 SQL 查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿伙计们,我现在有点卡住了,基本上我正在尝试找出如何过滤我的 SQL 查询,但是在理解如何完成时遇到了一些麻烦.

基本上,我将我网站上所有品牌的品牌"列出到一个表格中.我只是从我的产品表中取出包含每个产品的列.

这里是代码示例,这是 PDO 和 MySQL 选择:

query("SELECT Make, Model, Colour, FuelType, Year, Mileage, Bodytype, Doors, Variant, EngineSize, Price, Transmission, PictureRefs, ServiceHistory, PreviousOwners, Options, FourWheelDrive FROM import ORDER BY MakeASC");} 捕获(异常 $e){echo "错误";出口;}尝试 {$filterres = $db->query("SELECT DISTINCT Make FROM import ORDER BY Make ASC");} 捕获(异常 $e){echo "错误";出口;}?>

我已将 DISTINCT 添加到该代码块中,因为 SQL 列中有重复的Make's".

这是表格,正如您所看到的,我正在使用 while 循环将表格中的每个品牌显示到它自己的选项中.

<select class="form-control select-box"><option value="make-any">Make (Any)</option><?php while($make = $filterres->fetch(PDO::FETCH_ASSOC)){回声'<option value="">'.$make["Make"].'</option>';?></选择><button href="#" class="btn btn-block car-search-button btn-lg btn-success"><span class="glyphicon car-search-g glyphicon-search"></跨度>搜索汽车</表单>

我正在使用此代码将 SQL 行显示到列出的结果中:

fetch(PDO::FETCH_ASSOC)){回声'<div class="listing-container"><a href="carpage.php"><h3 class="model-listing-title clearfix">'.$row["Make"].''.$row["模型"].''.$row["Variant"].'</h3></a><h3 class="price-listing">£'.number_format($row['Price']).'</h3>

<div class="listing-container-spec"><img src="'.(explode(',', $row["PictureRefs"])[0]).'" class="stock-img-finder"/><div class="ul-listing-container"><ul class="overwrite-btstrp-ul"><li class="diesel-svg list-svg">'.$row["FuelType"].'</li><li class="saloon-svg list-svg">'.$row["Bodytype"].'</li><li class="gear-svg list-svg">'.$row["Transmission"].'</li><li class="color-svg list-svg">'.$row["Colour"].'</li>

<ul class="overwrite-btstrp-ul other-specs-ul h4-style"><li>里程:'.number_format($row["Mileage"]).'</li><li>引擎大小:'.$row["EngineSize"].'cc</li><button href="#" class="btn h4-style checked-btn hover-listing-btn"><span class="glyphicon glyphicon-ok"></span>历史检查<button href="#" class="btn h4-style more-details-btn hover-listing-btn tst-mre-btn"><span class="glyphicon glyphicon-list"></span>更多细节<button href="#" class="btn h4-style test-drive-btn hover-listing-btn tst-mre-btn"><span class="test-drive-glyph"></跨度>试驾<h4 class="h4-style listing-photos-count"><span class="glyphicon glyphicon-camera"></span>5 更多照片</h4>

';?>

我的问题是如何使用选择元素来过滤确切的制作",例如,如果 SQL 行包含与用户选择的相同的制作",那么我希望整行显示到列表和任何其他不显示的品牌.

关于如何实现这一点的任何代码示例?

谢谢

解决方案

你需要有类似的东西:

$where = "";如果 (!!$selectedMake) {$stmt = $db->prepare("SELECT Make, Model, Colour, FuelType, Year, Mileage, Bodytype, Doors, Variant, EngineSize, Price, Transmission, PictureRefs, ServiceHistory, PreviousOwners, Options, FourWheelDrive FROM import ORDER BY MakeASC");$stmt->execute();} 别的 {$stmt = $db->prepare("SELECT Make, Model, Colour, FuelType, Year, Mileage, Bodytype, Doors, Variant, EngineSize, Price, Transmission, PictureRefs, ServiceHistory, PreviousOwners, Options, FourWheelDrive FROM import where Make =?");$stmt->execute(array($selectedMake));}

请注意,else 块中不需要 order by,因为您有一个唯一的 Make.如果您的 Make 是文本的,那么您可能需要 '%?%' 而不是 ? 在查询中.

如果我理解的很好,你仍然有一个问题,即你缺乏确定$selectedMake 的值应该是什么的知识.首先,你应该为你的选择标签命名,所以你应该有这个:


                
            
发送“验证码”获取 | 15天全站免登陆