作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试按公司名称或客户名称(名字和姓氏)搜索客户数据库。但我还需要根据它们是否处于事件/非事件/删除状态进行搜索。但我的查询似乎忽略了最后 1 或 2 个 AND
语句。
这是我到目前为止所拥有的:
if($type == 'deleted') {
$sql = "SELECT * FROM `".self::$table_name."`
WHERE `company_name` LIKE '%{$id}%'
OR CONCAT(first_name, ' ', last_name) LIKE '%{$id}%'
AND `deleted` = '1'";
} elseif($type == 'inactive') {
$sql = "SELECT * FROM `".self::$table_name."`
WHERE `company_name` LIKE '%{$id}%'
OR CONCAT(first_name, ' ', last_name) LIKE '%{$id}%'
AND `deleted` = '0' AND `status` = 'inactive'";
} else {
$sql = "SELECT * FROM `".self::$table_name."`
WHERE `company_name` LIKE '%{$id}%'
OR CONCAT(first_name, ' ', last_name) LIKE '%{$id}%'
AND `status` = 'active' AND `deleted` = '0'";
}
我传递了一个类型,该类型要么是事件的、非事件的,要么是已删除的。如果没有任何内容通过,它将默认为事件状态。但是,因为我需要搜索公司名称,或者名字和姓氏的 CONCAT,所以它似乎忽略了最后几个 AND 语句。
当我搜索“非事件”时,它会带来一些结果,但包括事件/非事件/已删除的结果。我哪里错了?我知道这一定与 OR 有关,但我该如何解决它?
最佳答案
if($type == 'deleted') {
$sql = "SELECT * FROM `".self::$table_name."` WHERE ( `company_name` LIKE '%{$id}%' OR CONCAT(first_name, ' ', last_name) LIKE '%{$id}%' ) AND `deleted` = '1'";
} elseif($type == 'inactive') {
$sql = "SELECT * FROM `".self::$table_name."` WHERE ( `company_name` LIKE '%{$id}%' OR CONCAT(first_name, ' ', last_name) LIKE '%{$id}%' ) AND `deleted` = '0' AND `status` = 'inactive'";
} else {
$sql = "SELECT * FROM `".self::$table_name."` WHERE ( `company_name` LIKE '%{$id}%' OR CONCAT(first_name, ' ', last_name) LIKE '%{$id}%' ) AND `status` = 'active' AND `deleted` = '0'";
}
将 OR 条件放入 () 内,后跟 AND 语句。
关于php - MySQL 使用 WHERE、LIKE、OR 和 AND 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21699567/
我是一名优秀的程序员,十分优秀!