2011-04-20 89 views
1

我想開發一個笨自動完成功能使用SQL UNION與笨/ PHP,有人可以讓我知道是否有與此查詢任何問題嗎?這似乎是合理的給我,但我沒有得到任何輸出...在自動完成搜索查詢

例如,如果在「馬」有人類型的搜索框,我想用下面的查詢..

$term=$this->input->post('term')='Ma'; 

$this->db->query( 'SELECT subject 
        FROM items 
        WHERE subject LIKE 'Ma%' 
        UNION ALL 
        SELECT first_name 
        FROM accounts 
        WHERE first_name LIKE 'Ma%' 
        UNION ALL 
        SELECT description 
        FROM items 
        WHERE description LIKE 'Ma%''); 
$query=$this->db->get(); 

$items = array(); 

foreach ($query->result() as $row) 
array_push($items, $row->subject); 

$companies = array_slice($items, 0, 5); 
echo json_encode($items); 

結果應該是這個樣子:

Marios Shoes1 
Mario Shoes9 
marklast 
Mark 
marktwook 

任何意見將不勝感激。

+2

我猜這是使用AJAX來完成 - 使用Firebug瓦特/ Firefox或谷歌瀏覽器類似的東西來調試請求。使用Firebug,你可以查看,看看該請求是否成功與否,通常在響應部分,它會告訴你任何錯誤笨輸出。 – Matthew 2011-04-20 02:57:39

+0

除非它是一個錯字,行'$項= $這個 - >輸入 - >後(「術語」)=「馬」,'返回'致命錯誤:在寫上下文[無法使用方法的返回值。 。],至少對我來說。 – Ross 2011-04-21 08:51:26

+0

也做了'的print_r($查詢 - >結果());',看看你得到你所期待的數據。 – Ross 2011-04-21 08:52:33

回答

0

如果你正在使用的查詢,然後我想應該是這樣

$query = $this->db->query( 'SELECT subject 
        FROM items 
        WHERE subject LIKE 'Ma%' 
        UNION ALL 
        SELECT first_name 
        FROM accounts 
        WHERE first_name LIKE 'Ma%' 
        UNION ALL 
        SELECT description 
        FROM items 
        WHERE description LIKE 'Ma%''); 
+0

感謝josnidhin,實現不需要.... $查詢= $這個 - > DB-> get()方法; – 2011-07-08 02:53:06