2011-01-29 121 views
6

我試圖讓這個查詢CI中工作,但它吐出一個錯誤:笨MySQL查詢不工作

A Database Error Occurred Error Number: 1096

No tables used

SELECT *

如果我把查詢直接到MySQL它工作正常(我更換$帶有值的變量)。下面是該查詢作爲輸入到笨:

$this->db->query(" 
    SELECT * 
    FROM writing_quests 
    LEFT OUTER JOIN members_quests_completed 
    ON members_quests_completed.quest_id = writing_quests.id 
    WHERE writing_quests.level_required <= $userlevel 
    AND ( 
     members_quests_completed.user_id = $user_id 
     OR 
     members_quests_completed.user_id IS NULL)" 
); 
$query = $this->db->get(); 

上午我做的事情是錯誤的,我失蹤了嗎? 我已經包含了整個函數調用來防止問題在其他地方?我已經多次完成了這個確切的事情,沒有問題。

function get_all_quests_for_user() { 
    $user_id = $this->session->userdata('user_id'); 
    $userlevel = $this->session->userdata('user_level'); 

    $this->db->query("SELECT writing_quests.id, writing_quests.points_availible, writing_quests.name, writing_quests.note, writing_quests.instructions, writing_quests.time_limit, members_quests_completed.location_completed, members_quests_completed.status FROM writing_quests LEFT OUTER JOIN members_quests_completed ON members_quests_completed.quest_id = writing_quests.id WHERE writing_quests.level_required <= '$userlevel' AND writing_quests.unlocked = 1 AND (members_quests_completed.user_id = '$user_id' OR members_quests_completed.user_id IS NULL)"); 
    $query = $this->db->get(); 
    $this->db->last_query(); 
    return $query->result(); 
} 
+1

也許CI的`查詢()`方法不喜歡換行。 – BoltClock 2011-01-29 19:48:54

+0

感謝BoltClock。我已經無意中嘗試過了。我也有用換行符編寫的查詢。 – JoeM05 2011-01-29 19:51:46

回答

5
 
SELECT writing_quests.*, (put needed fields from members_quests_completed) 
FROM writing_quests 
LEFT JOIN members_quests_completed .... 

相同的字段名在結果物體破壞結果列的名稱

僅供參考它不是明智的做法*使用,你應該有字段列表...
,什麼是最重要的:

 
$result = $this->db->query (...); 

$這個 - > DB->查詢(...)是好當INSERT或UPDATE(大部分),當你拉動的數據分配結果變量:http://codeigniter.com/user_guide/database/results.html

+0

添加了一個字段列表,結果相同,錯誤相同。這在mysql命令行中工作正常。 – JoeM05 2011-01-29 20:18:32

6

我想應該是這樣的:

$query = $this->db->query(" 
SELECT * 
FROM writing_quests 
LEFT OUTER JOIN members_quests_completed 
ON members_quests_completed.quest_id = writing_quests.id 
WHERE writing_quests.level_required <= $userlevel 
AND ( 
    members_quests_completed.user_id = $user_id 
    OR 
    members_quests_completed.user_id IS NULL)" 
); 

或者:

$query = $this->db->get('mytable');