2012-10-18 61 views
1

可能重複:
Codeigniter ActiveRecord: join backticking笨數據庫加入不接受,而不是列名值

我想給在列名的位置值,但它是無法識別它和它給我錯誤。這裏是我的代碼:

$this->db->select('*')->from('users')->where('users.ID',$this->session->userdata('user_id')); 
$this->db->join('contact','contact.ID = 1','left'); 
$result = $this->db->get()->row_array(); 

問題與加入,它不接受value.It是給我這個錯誤

error: 

Unknown column '1' in 'on clause' 

我不得不使用1,因爲是沒有關係表和聯繫表中只有一行。

+0

你應該輸入相關的表列,而不是像1 users.id –

+0

連接表纔有意義,當他們是相關的。我會去''用戶'和'聯繫人'兩個不同的查詢。 – Mudshark

回答

0

感謝每一個爲reply.I找到一種替代,使用此: $this->db->query("SELECT * FROM (users) LEFT JOIN 'contact' ON contact.ID = ? WHERE users.ID = ?",array(1,$user_id)); ,這樣笨並沒有給我任何錯誤。

0

當你準備做一個連接,你需要使它在公共領域 自然SQL將是:

select * from users join contact on USERS.COMMON_FIELD = CONTACT.COMMONFIELD where users.id = $this->session->userdata('user_id')

「翻譯」這CI

$this->db->select('*')->from('users')); 
$this->db->join('contact','contact.common_field = users=common_field'); 
$this->db->where('users.ID',$this->session->userdata('user_id')) 

你必須放在它所說的contact.ID = 1);表之間的通用字段,

mysql加入http://dev.mysql.com/doc/refman/5.0/en/join.html

笨加入:http://codeigniter.com/user_guide/database/active_record.html

+0

感謝您回覆jcho360,實際上這個查詢的工作原理是「SELECT * FROM('users') LEFT JOIN'contact' ON'contact'.'ID' = 1 WHERE'users'.''''''''' –

+0

我只需要刪除我的1的單引號,它會工作。但直到現在我無法做到這一點。 –

0

前段時間我遇到了這個問題,我發現了一種解決方法,請參閱here

(所以這個問題是重複的)

+0

不能有類似問題的解決方案。 –

+0

是的,這只是一個解決方法。如果您將您的查詢合併在一起,則無法使用您的解決方案(原始查詢)。這是ActiveRecord中的一個錯誤:https://github.com/EllisLab/CodeIgniter/issues/590 (我的解決方案:我寫了一個類似於ActiveRecord的庫:)) – uzsolt