2017-07-29 166 views
1

大家好,我正在嘗試在codeigniter中運行子查詢。我已經做到了這一點如何在CI中運行子查詢

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

我的功能看起來像這樣

​​

,但它返回該錯誤

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

如果我的$ id的步伐放一些值,那麼它給結果。我該如何解決這個問題。請幫幫我。

+1

逃生報價或使用大小寫混合'$這個 - > DB->其中( 「ID NOT IN(SELECT friend_id FROM FRIEND_LIST其中USER_ID = '$ ID')」);' – Tpojka

+0

笨已經建立在不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:

您可以檢查此引用: subquery in codeigniter active record

+0

只是想澄清,如果你想使用第二個選項,你需要添加這個[庫](http://labs.nticompassinc.com/CodeIgniter-Subqueries/)到您的CI設置。因爲我知道CI沒有任何'$ this-> subquery-> start_subquery'函數。 –

+0

@disha子查詢是使用子查詢方法之前需要加載的庫 – cyberrspiritt

+0

@cyberrspiritt:是的。我們需要爲子查詢添加librabry。即: $ this-> load-> library('subquery'); – disha

1

你忘了逃跑同一(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')");