simple_query()
ご指摘のとおりに動作するCodeIgniterの唯一のデータベースメソッドです。ドキュメントに記載されているように、「ほとんどのユーザーがこの機能を使用することはめったにありません。」
いくつかの例外を除いて、他のすべてのクエリビルダーメソッドはDB_query_builder
のいずれかを返します インスタンスCI_DB_result
オブジェクトまたは-「書き込み」タイプのクエリの場合-成功または失敗を示すブール値。いくつかの例外は、整数、文字列、または混合(値またはFALSE)を返します。
入力値を受け入れるすべてのメソッドは、提供された値をエスケープします(またはオプションでエスケープしません)。
クエリビルダー(QB)は優れたツールですが、多くの場合、必要ありません。 $this->db->query('your statement here');
を使用する 多くの場合、より効率的です。 QBの目標は、db->query('a query string');
の呼び出しで文字通り使用される文字列を作成することです。 。
したがって、これをすべて入力する代わりに...
$this->db->select('id, name, email');
$this->db->from('customers');
$this->db->where('id', $id)
$this->db->where('active', $is_active)
$query = $this->get();
$result = $query->result();
次のように入力すると、QBが上記のコードで作成したクエリ文字列が直接提供されるため、上記とまったく同じ結果が得られます。 (クエリも完全にエスケープされます。)しかし、そこに到達するために実行されるコードは1トン少なくなります。 (タイピングを減らします。)
$query = $this->db->query("Select id, name, email from customers where id = ? and active = ?", [$id, $is_active]);
$result = $query->result();
これは、クエリバインディング の使用例です。
コアソースコード(主に「ドライバー」ファイル内)を調べると、simple_query()
を使用する場所がわかります。 適切で便利です。