从位置条件中删除过滤器


Removing filters from where condition

我有一个通过PHP动态生成的WHERE条件。这是查询的 WHERE 部分的示例

WHERE 1=1 AND (`CATEGORYID`='A1') AND (`BRAND`=:filter_0 OR `BRAND`=:filter_1) 
AND (`KEYWORDS` LIKE :keyword_2) 
AND `TYPE` = '0' AND `DISTRICT`='1' ORDER BY `STARTDAY` DESC

任何人都可以建议一种删除 WHERE 子句某些部分的方法,例如:从 SQL 中删除 BRAND 部分。

假设 PHP 始终维护该输出:

Match:               Replace:
AND '(`BRAND`.*?')   <nothing>

此正则表达式查找另一个以 ('BRAND' 开头的 AND 的开头,并懒惰地搜索最近的右括号。

在PHP中,我相信你会这样做:

preg_replace ( "AND '(`BRAND`.*?')" , '' , $string);

preg_replace接受参数的地方(查找、替换、原始)。