0
        $conditions[] = $this->getConnection()
            ->quoteInto('cat_index.category_id IN (?)', "{$filters[category_id]},{$Catids}");

quote into は、値を引用符で囲みます。quoteInto メソッドを使用せずに、この同じメソッドを使用したいと思います。基本的に、引用符を追加せずに同じことを行うメソッドを知りたい

4

3 に答える 3

0

問題は、文字列から値を解析していたため、$Cateids が整数ではなく文字列であるかのように扱われたことでした。私は次のことをしました

    $values = $values ? array_filter(explode('_', $values)) : array();
    $i = 0;
    foreach($values as $v) {
        $values[$i] = intval($v);
    }

に続く

        $query = "cat_index.category_id IN (" .
            implode(',', array_fill(0, count($values), "?")). ")";
        foreach($values as $v) {
            $conditions[] = $this->getConnection()->quoteInto($query,$v);
        }

渡される値は、引用符で囲まれるのではなく、整数のように扱われるようになりました

于 2013-09-04T13:53:49.267 に答える
-1

$filters['category_id']が配列ではないと仮定$Catidsしますが、配列であると仮定すると、おそらく次のようになります。

->quoteInto('cat_index.category_id IN (?)', array_merge(array($filters['category_id']), $Catids));

編集:次のこともできます:

->quoteInto('cat_index.category_id IN (?)', array_merge(array($filters['category_id']), $Catids), 'INTEGER');

値が数値であることが確実な場合 - これにより、個々の値が引用符で囲まれることがなくなります。ただし、MySQL は引用符で囲まれた整数で完全に機能します。

于 2013-09-04T13:07:18.470 に答える