2017-07-29 5 views
1

こんにちは皆私はcodeigniterでサブクエリを実行しようとしています。そして、私は私の関数は、このCIでサブクエリを実行する方法

​​

のように見えるが、私が$ IDのペースでいくつかの値を入れた場合、それが与える

Message: syntax error, unexpected '$id' (T_VARIABLE), expecting ',' or ')'. 

このエラーを返してこの

$this->db->where('id NOT IN (SELECT friend_id FROM friend_list WHERE user_id = '$id')'); 

を行っています結果。どのように私はこれを解決することができます。私を助けてください。

+1

引用符をエスケープするか、大文字と小文字を混在した '$ this-> db-> where(" id NOT IN(SELECT friend_id FROM friend_list WHERE user_id = '$ id') ') "); – Tpojka

+0

Codeigniterはhttps://www.codeigniter.com/user_guide/database/query_builder.html?highlight=where_not_in#CI_DB_query_builder::where_not_in – user4419336

+0

@Tpojkaありがとう) –

答えて

1

まずあなたがサブクエリのためのライブラリを含める必要があります。

$this->load->library('subquery'); 

次に、このようなあなたのクエリを置く:

これは、我々はCI 方法1にサブクエリを書くことができる方法です。

$this->db->where('id NOT IN (SELECT `friend_id` FROM `friend_list` WHERE `user_id` = '$id')', NULL, FALSE); 

または次のように書くこともできます。 方法2:

$this->db->select('id,username')->from('users'); 
$sub = $this->subquery->start_subquery('where_in'); 
$sub->select('friend_id')->from('friend_list'); 
$sub->where('user_id', $id); 
$this->subquery->end_subquery('id', FALSE); 

あなたがこの参照を確認することができます:あなたは(シングル)同じエスケープするのを忘れ subquery in codeigniter active record

+0

2番目のオプションを使用する場合は、この[ライブラリ](http://labs.nticompassinc.com/CodeIgniter-Subqueries/)をCIセットアップに追加する必要があることを明確にしたいだけです。 CIには '$ this-> subquery-> start_subquery'関数がありません。 –

+0

@dishaサブクエリは、サブクエリメソッドを使用する前にロードする必要があるライブラリです。 – cyberrspiritt

+0

@cyberrspiritt:yes。サブクエリのためにlibrabryを追加する必要があります。つまり: $ this-> load-> library( 'subquery'); – disha

1

が引用:

$this->db->where('id NOT IN (SELECT `friend_id` FROM `friend_list` WHERE `user_id` = \'$id\')'); 

または

$this->db->where('id NOT IN (SELECT `friend_id` FROM `friend_list` WHERE `user_id` = ' . $id . ')'); 

をあなたはとしてそれを書くべき

または

$this->db->where("id NOT IN (SELECT `friend_id` FROM `friend_list` WHERE `user_id` = '$id')"); 
関連する問題