Php FluentPDO似乎找不到一种方法或条款
所以我已经用了很多,但我似乎找不到一种方法来做OR子句,where auto添加AND,我看不到解决方法 这就是我需要创建的SQL语句的类型Php FluentPDO似乎找不到一种方法或条款,php,mysql,sql,Php,Mysql,Sql,所以我已经用了很多,但我似乎找不到一种方法来做OR子句,where auto添加AND,我看不到解决方法 这就是我需要创建的SQL语句的类型 SELECT * FROM `items` WHERE `item_var` LIKE '%test%' OR `item_text` LIKE '%test%' OR `item_int` LIKE '%test%' OR `item_select` LIKE '%test%' ORDER BY row_id 我不熟悉这个库,但是在查看了源代
SELECT *
FROM `items`
WHERE `item_var` LIKE '%test%'
OR `item_text` LIKE '%test%'
OR `item_int` LIKE '%test%'
OR `item_select` LIKE '%test%'
ORDER BY row_id
我不熟悉这个库,但是在查看了源代码之后,如果不手动将
或代码放入where()
调用中,这似乎是不可能的
根据,它将在每个后续子句的前面加上和
这不是世界上最具表现力的代码,但似乎您必须手动输入或s:
->where('(item_text LIKE "%test%" OR item_int LIKE "%test%" OR item_select LIKE "%test%")')
只要您只使用或
,您就可以通过将它们放入数组并内爆()
来清理它们。也许这样的方法会奏效:
$conditions = [
'item_text LIKE "%test%"',
'item_int LIKE "%test%"',
'item_select LIKE "%test%"',
];
$orWhere = implode(" OR ", $conditions);
$query = $fpdo->from('items')->where("($orWhere)");
(编辑:语法)有这样一种方法
$where['k1'] = $v1
$where[' ( k2 in (' . $v2 . ') or k3 in (?) )'] = $v3
如果要编写类似于where field=?或字段1=?或者…
,然后填充占位符?甚至还有一个。效果很好,现在我不认为“%test%”会对字符进行转义,所以我应该在将值放入其中之前转义它们吗?