- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 Zend Framework 1.12.3。我需要创建一个嵌套 WHERE 的查询,例如
SELECT * FROM table1
WHERE (id = 'foo' AND name = 'bar') OR (grade = 123)
这是我的尝试
$this->getDbTable()->select()
->from($this->getDbTable(), array('*')
->where('id = ? AND name = ?', $foo, $bar)
->orWhere('grade = ?', $grade);
然而,结果却是
SELECT * FROM table1
WHERE (id = 'foo' AND name = 'foo') OR (grade = 123)
代替 name = 'bar'
基本上,我不能使用多个 ?
为每个 ?
分配不同的值。你知道任何解决方案吗?
谢谢
LE:使用 WHERE 条件,例如 ->where("id = $foo and name = $bar")
确实有效,但是它不能像 这样防止注入(inject)攻击?
确实
最佳答案
查看代码,我看不出有什么办法,where 子句仅适用于条件,但我认为添加括号,您可以使用正确的优先级管理 AND 和 OR。
试试这个:
this->getDbTable()->select()
->from($this->getDbTable(), array('*')
->where('(id = ?', $foo) // add '(' before condition
->where('name = ?)', $bar) // add ')' after condition
->orWhere('grade = ?', $grade);
关于php - Zend Framework 1.12 Db Select - 嵌套 WHEREs 在条件中使用问号的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24776743/
我想选择名称为xxx,品牌为xxx的单条记录(整条记录)。记录将始终是单数的,因为名称和品牌是唯一索引: def getProductByNameAndBrand(name, brand) do
这没有意义。 Sequelize 创建了一个以 AND 而不是 WHERE 开头的 where 条件。 我正在尝试执行此查询: var query = { limit: 10,
请记住以下两种类型的查询: --query1 Select someFields From someTables Where someWhereClues Union all Select someF
我有一个名为 Students 的列的表。 我对 select 行使用以下三个查询。 1. select * from Students 2. select * from Students whe
哪种选择语句更好? SELECT * FROM aTable WHERE aField in ( SELECT xField FROM bTable WHERE yFi
我有 table DROP TABLE IF EXISTS `slug`; CREATE TABLE `slug` ( `slug` varchar(255) NOT NULL, `id` i
我正在努力从 swift 数组中删除一个项目,但我不确定为什么会收到此错误。 我的代码是: var itemToRemove = list[indexPath.item] selectedCasesA
我想根据对表 B 的 true 或 false 选择获取表 A 中的一些行。 表A id event name 4585 meeting calendar discussion 表
有一个如下所示的 mysql Person 表。 id 是主要的,有索引的。但其他列没有索引.. id name surname age
我有一个相对简单的查询,它返回用户个人资料以及与该用户相关的 2 个计数(流事件和库存); SELECT u.*, r.regionName, COUNT(i.fmid) AS invcount, C
我有一个名为“ friend ”的表,您可以在下面看到。有两列 userId 和friendId,它们都不是主键。每次我向表中插入数据时,都会添加 2 行。我希望能够在插入之前检查至少一行是否已存在,
我需要一种方法来遍历数据库并返回适当的结果。在本例中,它按作者、标题、出版日期或 ISBN 代码搜索书籍。我决定使用 where() 方法,但我遇到了两个问题: 1) 我无法通过多个字段进行搜索。很容
我试图通过每 24 小时仅插入唯一值来跟踪页面 View 。但是当我运行此查询时,出现语法错误。 insert ignore into profilepageviews values( '77.777
我有以下查询: select sites.denomination, rooms.floor, rooms.number, (count(beds.id) - sum(if(beds.state<0,
我正在尝试动态构建一个表达式树,它使用 in 查询有效地查询数据源。我要复制的查询是 Countries.Where(y => Countries .
我正在使用 laravel 5.7 当我使用 whereHas 检查关系是否存在时,我遇到了 Unknown column "has"in 'where clause 错误!为什么? 这是我的代码:
我正在处理我同事的旧项目,我在她的代码中找到了 WHERE TRUE AND ID='1' AND STAT='1'。我试图删除 TRUE AND,因此查询变为 WHERE ID='1' AND ST
我有一张 table ,它看起来像: +-----------+----------+ + person_id + group_id + +-----------+----------+ + 1
我有一个这样的数组: array = np.array([ [True, False], [True, False], [True, False],
这可能很明显,但我感到非常困惑。 我有一个带where子句(带参数列表的where)的SQL查询。如果所有这些参数都为null,则需要SQL忽略where子句并检索所有记录。这在SQL中容易做到吗?我
我是一名优秀的程序员,十分优秀!