3

次の zend コードを使用して、検証済み = 1 のテーブルからすべてのデータを選択しています。

$table = $this->getDbTable();
$select = $table->select();
$select->where('verified = 1');
$rows = $table->fetchAll($select);

いいえ、検証済みが「1」に等しくないテーブルからすべてのデータを選択したいと思います。次の方法を試しましたが、データをフェッチしていません。

$select->where('verified != 1');
$select->where('verified <> 1');
$select->where('verified != ?', 1);

「検証済み」列のデータ構造:

Field: verified
type: varchar(45)
Collation: utf8_bin         
NULL: Yes   
Default: NULL  

Zend の WHERE 句で「等しくない」演算子を使用する方法はありますか? ありがとう

4

5 に答える 5

6
$select->where('verified != ?', 1);

実際の世界のクエリの例:

    $query = $this->getDb()->select();
    $query->from('title', array('title_id' => 'id', 'title', 'production_year', 'phonetic_code'))
            ->where('kind_id = 1')
            ->where('title = ?', trim($title))
            ->where('production_year != ?', '2009')
            ->limit(1)
            ;

IMDB データベースから映画情報を選択します。正常に動作します。

于 2009-12-19T09:51:31.960 に答える
4

MySQL は<=>、オペランドが等しいか両方が null の場合に true を返すカスタム演算子をサポートしています。それらが異なる場合、または 1 つのオペランドが null の場合は、false を返します。

$select->where('verified <=> 1');

この演算子は非標準です。標準 SQL の構文はIS NOT DISTINCT FROM、MySQL の .xml と同じように機能します<=>

于 2009-12-25T07:04:50.787 に答える
1

クエリを実行しているテーブルのテーブル構造を教えていただけますか? 検証された列は int または string ですか? また、ZEND が構築する SQL ステートメントを出力してみてください。以下のエコー行を参照してください。

$table = $this->getDbTable();
$select = $table->select();
$select->where('verified = 1');
echo sprintf("sql %s",$select);
$rows = $table->fetchAll($select);
于 2009-12-19T14:37:47.303 に答える
0

試す :

$select->where('verified != ?', '1');

値を引用符で囲みます。それは私のために働いています。

于 2010-12-23T22:29:52.887 に答える