2011-01-29 2 views
6

Я пытаюсь получить этот запрос, чтобы работать в CodeIgniter, но это выплевывая ошибку:CodeIgniter MySQL запросов не работает

A Database Error Occurred Error Number: 1096

No tables used

SELECT *

Если я ставлю запрос непосредственно в MySQL он работает отлично (я заменить $ переменные со значениями). Вот запрос в качестве входных данных в CodeIgniter:

$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

Возможно КИ 'запроса()' метод не любит разрывы строк. – BoltClock

+0

Спасибо BoltClock. Я уже пробовал это. У меня также есть запросы, написанные с разрывами строк, которые работают. – JoeM05

ответ

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

же поля имена повреждая имена Результаты столбца в объекте результата

FYI это не разумно использовать *, вы должны иметь список полей ...
и что самое главное:

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

$ this-> db-> запрос (...) это хорошо, когда INSERT или UPDATE (в основном), когда вы тянущие данные присвоить результаты переменной: http://codeigniter.com/user_guide/database/results.html

+0

Добавлен список полей, тот же результат, та же ошибка. Это отлично работает в командной строке mysql. – JoeM05

+0

он отлично работает с mysql – bensiu

+0

Да, он отлично работает в mysql. Вот почему я так смущен. – JoeM05

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'); 
+0

Вариант 1, казалось, работал. Благодаря! – JoeM05

Смежные вопросы