Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php FluentPDO似乎找不到一种方法或条款_Php_Mysql_Sql - Fatal编程技术网

Php FluentPDO似乎找不到一种方法或条款

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 我不熟悉这个库,但是在查看了源代

所以我已经用了很多,但我似乎找不到一种方法来做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

我不熟悉这个库,但是在查看了源代码之后,如果不手动将
代码放入
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%”会对字符进行转义,所以我应该在将值放入其中之前转义它们吗?