停止报价在zend中被转义

时间:2012-05-22 06:42:06

标签: php zend-framework zend-db

我有一个简单的哈希表,有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是整数,则相同的查询有效[在这种情况下不需要引号]

谢谢!

2 个答案:

答案 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