2011-01-29 33 views
6

Tôi đang cố gắng để có được truy vấn này để làm việc trong CodeIgniter nhưng nó phun ra một lỗi:CodeIgniter MySQL truy vấn không làm việc

A Database Error Occurred Error Number: 1096

No tables used

SELECT *

Nếu tôi đặt câu hỏi trực tiếp vào MySQL nó hoạt động tốt (tôi thay thế $ biến có giá trị). Đây là truy vấn dưới dạng đầu vào vào 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(); 

Tôi đang làm điều gì đó sai và thiếu nó? Tôi đã bao gồm toàn bộ cuộc gọi chức năng trong trường hợp vấn đề ở đâu đó khác? Tôi đã làm điều này chính xác nhiều lần mà không có một vấn đề.

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

lẽ CI của 'truy vấn() 'phương pháp không thích ngắt dòng. – BoltClock

+0

Cảm ơn BoltClock. Tôi đã vô tình thử nó mà không có. Tôi cũng có các truy vấn được viết với các ngắt dòng hoạt động. – JoeM05

Trả lời

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

lĩnh vực cùng tên hư tên kết quả cột trong đối tượng kết quả

FYI nó không phải khôn ngoan để sử dụng *, bạn nên có danh sách các lĩnh vực ...
và những gì là quan trọng nhất:

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

$ this-> db-> query (...) là tốt khi INSERT hoặc UPDATE (chủ yếu), khi bạn kéo dữ liệu gán kết quả cho biến: http://codeigniter.com/user_guide/database/results.html

+0

Đã thêm danh sách trường, cùng một kết quả, cùng một lỗi. Điều này hoạt động tốt trong dòng lệnh mysql. – JoeM05

+0

nó sẽ hoạt động tốt với mysql – bensiu

+0

có, nó hoạt động tốt trong mysql. Đây là lý do tại sao tôi rất bối rối. – JoeM05

6

Tôi nghĩ rằng nó phải như thế này:

$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)" 
); 

Hoặc:

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

Tùy chọn 1 dường như hoạt động. Cảm ơn! – JoeM05

Các vấn đề liên quan