0

3列のハッシュの単純なテーブルがあります。IDはメールアドレスです。

ここで、id と type を指定してハッシュを取得したいと思います。

私はこれをします:

$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 が作成された後のコードにありました。引用符がエスケープされているように見えますが、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 に答える
0

代わりにこれを試してください

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