CodeIgniter PHP SQL

WBOY
リリース: 2016-06-23 14:36:13
オリジナル
935 人が閲覧しました

CI によるデータベース ステートメントの操作は、括弧の問題など、非常に便利な場合もあれば、厄介な場合もあります。括弧に関する問題は、and と or の間の優先関係を扱うことから発生します。

場合によっては、or は and よりも高い必要があります。 $this->db->where() と $this->db->orwhere() を実行する方法。

最初の方法: SQL ステートメントを自分で書きます。しかし、すでに作成されたプログラムを変更するのが難しい場合もあります。

2 番目: where ステートメントを自分で作成すると、このような問題が発生する可能性があります。

where() と orwhere() は実際には同じ関数です。

マニュアルには次の段落があります:

$this->db->where();

この関数を使用すると、4 つのメソッドのいずれかを使用して WHERE 句を設定できます:

説明: this に渡します。安全なクエリを生成するために、関数のすべての値は自動的にエスケープされます。

単純なキー/値メソッド: $this->db->where('name', $name);

// 生成: WHERE name = 'Joe'

等号が追加されていることに注意してください。 。

この関数を複数回呼び出すと、これらの条件は AND で結合されます:

$this->db->where('name', $name);
$this->db->where ( 'title', $title);
$this->db->where('status', $status);

// WHERE name = 'Joe' AND title = 'boss' AND status = 'active 'カスタムキー/値メソッド:

最初のパラメータに演算子を含めて比較を制御できます:

$this->db->where('name !=', $name); ->where('id <', $id);

// 生成: WHERE name != 'Joe' AND id < 45 連想配列メソッド: $array = array('name' => $name , 'title' => $title, 'status' => $status);

// WHERE name = 'Joe' を生成します。 title = 'boss' AND status = 'active'
このメソッドを使用するときに演算子を含めることもできます:
$array = array('name !=' => $name, 'id <' => $id, 'date >' => $date);
$this->db->where($array);

$where = "name='Joe' AND status='boss' OR status='active'";


$this->db->where($where);
$this->db->where() は、オプションの 3 番目の引数を受け入れます。これを FALSE に設定すると、CodeIgniter はバッククォートを含むフィールド名またはテーブル名を保護しません。

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

赤でマークされている場所は、No.4 が言ったことです。 :

$where = "name='Joe' AND status='boss' OR status='active'";

$this->db->where($where);

実際には、そうではありません。働かないよ。 where() はステートメントに `` を追加し、次のように言います:


"`name='Joe' AND status='boss' OR status='active'`" SQL ステートメントにエラーがあります。

3 番目のタイプ:

ソース コードを変更します:

CI フォーラムには次の段落があります:

... ...

like 配列に括弧を追加するだけです。 systemdatabasedb_act_active_chp

aboutline1559

php

$ SQL. = IMPLODE ("n", $ this -& gt; ar_like) }




CI 開発者が or_like が内部的に括弧を形成できないバグを修正できることを願っています。できるだけ早く
このフォーラムは非常に愚かです。改行文字 n が表示されると、PHP を知っている人は自分でそれを追加できます。

出典: http://codeigniter.org.cn/forums/thread-1270-1-1.html

同様に、where も変更できますが、これは where ステートメントの先頭と末尾にのみ追加されます。


実際のニーズに合わせて、基本的な状況を使用していくつかの組み合わせを解決できます。もっと良いものがあるかどうかはわかりません。ははは、CI ソース コードの括弧のバグを直接修正する必要があります

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート