为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用'%'where和'OR'编写SQL'LIKE'查询以进行搜索操作?

如何使用'%'where和'OR'编写SQL'LIKE'查询以进行搜索操作?

PHP
蓝山帝景 2021-04-09 16:15:54
我正在尝试对两个不同的列使用SQL LIKE。是否可以使用这种类型的操作?我已经尝试过像:$sWhere .= " file_name like '%" . $search_item . "%' OR name like '%" . $search_item . "%' and ";但以上代码仅适用于单个情况。我想对两者都进行搜索。这是我的代码:if (isset($search_item) && $search_item != '') {      $sWhere .= " file_name like '%" . $search_item . "%' and ";    }我想同时使用带有一个搜索字段的列名来执行搜索操作。回复 :SELECT a.id, a.file_name, a.file_path,a.upload_type,a.upload_by, b.username,a.addedon FROM tbl_asd as a INNER JOIN user as b on b.id = a.upload_by WHERE a.upload_type = 'asd' and  a.addedon >= ( CURDATE() - INTERVAL 1000 DAY ) and (file_name like '%asd%' OR upload_by like '%asd%')  ORDER BY id desc limit 0,10找到“无行”!
查看完整描述

3 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您需要将子句的OR部分WHERE用括号括起来,否则您将获得比预期更多的结果(基本上任何具有的行file_name like '%" . $search_item . "%')。改用这个:


$sWhere .= " (file_name like '%" . $search_item . "%' OR name like '%" . $search_item . "%') and ";

请注意,按原样查询可以使您易于进行SQL注入。理想情况下,您应该准备查询,而不要使用类似以下的代码:


$query = "SELECT ... FROM ... WHERE";

$params = array();

$types = '';

if (isset($search_item) && $search_item != '') {

     $query .= " file_name like ? OR name like ? AND ";

     $types .= 'ss';

     array_push($params, "'%$search_item%'", "'%$search_item%'");

}

// add other where clauses in a similar way

// ...

// make sure we have a trailing `WHERE` clause

$query .= '1 = 1';

$stmt = $link->prepare($link, $query) or die($link->error);

$stmt->bind_param($types, ...$params);

$stmt->execute() or die($stmt->error);


查看完整回答
反对 回复 2021-04-23
?
米脂

TA贡献1836条经验 获得超3个赞

您可以使用concat来构建适当的条件

$sWhere .= " file_name like concat('%', $search_item ,'%') OR name like concat('%', $search_item ,'%') ";

(删除了字符串末尾的AND)

无论如何,您应该查看数据库驱动程序以获取准备好的状态和绑定参数,因为在SQL中使用PHP可能会产生SqlInjection


查看完整回答
反对 回复 2021-04-23
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

$sWhere .= " (file_name like '%" . $search_item . "%' OR name like '%" . $search_item . "%') and ";


查看完整回答
反对 回复 2021-04-23
  • 3 回答
  • 0 关注
  • 199 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信