0

我有 3 列的简单哈希表。ID 是一个电子邮件地址。

现在,我想检索给定 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 是整数,则相同的查询有效[在这种情况下不需要引号]

谢谢!

4

2 回答 2

0

试试这个

select = $this->getDbTable()->select();
$select->where('id=?',trim($id,"'"))->where('type=?', trim($type,"'"));
于 2012-05-22T07:31:51.850 回答
0

查询的问题在于创建 $select 之后的代码。即使引号似乎已转义,当与 fetchAll 或 fetchRow 一起使用时,选择也可以正常工作。

以下代码段正常工作,

    $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
于 2012-05-24T07:57:18.930 回答