【发布时间】:2020-05-16 11:16:55
【问题描述】:
我刚刚开始学习 php 和 mysql,并且正在使用 php 和 mysql 创建一个项目。我在从数据库中搜索和过滤数据时卡住了。搜索基本上是一个组合搜索并根据用户输入过滤数据。
这是我的代码:
public function filterSearch(Request $request){
$new = $request->get('new');
$used = $request->get('used');
$registered = $request->get('registered');
$make = $request->get('make');
$model = $request->get('model');
$price = $request->get('price');
$city = $request->get('city');
$registration = $request->get('firstRegistration');
$query = DB::select("SELECT * FROM ads WHERE vehicleCond LIKE '".$new."' OR vehicleCond LIKE '".$used."' OR vehicleCond LIKE '".$registered."' ");
$decode = json_decode(json_encode($query),true);
$finalArr = array();
for($i=0; $i<count($decode); $i++){
if($make || $model || $registration){
if(($decode[$i]['make'] == $make) || ($decode[$i]['model'] == $model) || ($decode[$i]['registration'] == $registration)){
array_push($finalArr,$decode[$i]);
}
}else{
array_push($finalArr,$decode[$i]);
}
}
return response()->json(['success'=>$finalArr], 200);
}
结果不正确...对于单选,它工作正常。当我使用组合时,结果不正确。
【问题讨论】:
-
LIKE用于匹配模式。使用=进行精确匹配。 -
“这是我的代码”。好的,你有什么问题?
-
我假设您使用的是 Laravel,因为查询生成器的语法似乎很熟悉。坦率地说,您需要重新阅读 Laravel 文档,因为这正是不使用 Laravel 的查询构建器的方法——忽略您的代码错误的事实,如果它可以工作,那么它极容易发生 SQL 注入。
-
@Barmar:问题已更新
-
向我们展示为失败的案例生成的 SQL。