2011-07-22 64 views
1

我得到一個錯誤使用此項功能:代碼ignitier MySQL查詢

控制器

$data['carSubwoofers'] = $this->db->get_where("department = 'MOBILE AUDIO' 
          AND class = 'CAR STEREO' 
          AND subclass 
          IN ('SO CAR STEREO','SUBS','SO SUBS')")->result(); 


$this->load->view('Category/carSubwoofers',$data); 

查看

foreach($data->result() as $row) { ?> 
<?php echo $row->modelNumber; ?> 
    <?php echo $row->name; ?> 
<?php } ?> 

代碼點火器拍攝了這一點:

A Database Error Occurred 

錯誤號:1064

您的SQL語法錯誤;請檢查與您的MySQL服務器版本對應的手冊,以在''MOBILE AUDIO'和class ='CAR STEREO'以及子類IN('SO CAR STEREO'在第2行使用的正確語法='CAR STEREO'和子類IN('SO CAR STEREO','SUBS','SO SUBS'))

文件名:C:\ Program Files(x86)\ Apache Software Foundation \ Apache2。 2 \ htdocs中\ CodeIgniter_2.0.2 \ SYSTEM \數據庫\ DB_driver.php

行號:330

+2

我在該查詢中的任何地方都沒有看到表名,也沒有看到「WHERE」關鍵字。我沒有使用Code Igniter,但不應該$ this-> db-> get_where(...)的某個部分指定一個表對象?該聲明如何知道它在查詢什麼? – Marvo

回答

4

你可以連續使用你的條件語句一起讓它看起來更乾淨。

$this->db->where('department', 'MOBILE AUDIO')->where('class', 'CAR STEREO')->where_in('subclass', array('SO CAR STEREO','SUBS','SO SUBS'))->get('tableName'); 
0

不知道codeigniter,但它看起來像忘記了分配$ this-> db查詢一個表。

+0

檢查我碰到的文檔http://codeigniter.com/user_guide/database/active_record.html get_where需要一個表名,where語句應該是第二個參數。 –

2

你get_where()是完全關閉的文件...

$query = $this->db->get_where('TABLE', array('id' => $id), $limit, $offset);

docs

所以你會想是$this->db->get_where("TABLE", array('MOBILE AUDIO' => 'CAR STEREO','class' =>'CAR STEREO'...)