我有一个简单的哈希表,有3列。我是一个电子邮件地址。
现在,我想检索给定id和类型的哈希。
我这样做:
$select = $this->getDbTable()->select();
$select->where('id=?', $id)->where('type=?', $type);
我得到了
SELECT "hashes".* FROM "hashes" WHERE (id=\'randomemail@randomurl.com\') AND (type=\'email\')
而不是
SELECT "hashes".* FROM "hashes" WHERE (id='randomemail@randomurl.com') AND (type='email')
我玩过quote和quoteInto,但它一直在逃避报价。我看到的任何地方,似乎都不应该发生这种情况。我哪里可能出错?
如果type和id是整数,则相同的查询有效[在这种情况下不需要引号]
谢谢!
答案 0 :(得分:0)
试试这个
select = $this->getDbTable()->select();
$select->where('id=?',trim($id,"'"))->where('type=?', trim($type,"'"));
答案 1 :(得分:0)
查询的问题是在创建$ select之后的代码。即使引号似乎已转义,当与fetchAll或fetchRow一起使用时,select也能正常工作。
以下代码段正常运作,
$select = $this->getDbTable()->select();
$select->where('id=?', $id)->where('type=?', $type);;
$hash = $this->getDbTable()->fetchRow($select)->toArray();
即使$ select-> __ toString()显示
SELECT "hashes".* FROM "hashes" WHERE (id=\'someemail@gmail.com\') AND (type=\'default\') LIMIT 1