CodeIgniter MySQL查询不起作用

Joe*_*M05 6 php mysql activerecord codeigniter

我试图让这个查询在CodeIgniter中工作,但它正在吐出一个错误:

发生数据库错误错误号:1096

没有使用表格

选择*

如果我将查询直接放入MySQL,它可以正常工作(我用值替换$ variables).这是查询作为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();
Run Code Online (Sandbox Code Playgroud)

我做错了什么,我错过了吗?我已经包含了整个函数调用,以防问题出在其他地方?我已经多次完成了这件事而没有任何问题.

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();
}
Run Code Online (Sandbox Code Playgroud)

Iva*_*van 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 )"
);
Run Code Online (Sandbox Code Playgroud)

要么:

$query = $this->db->get('mytable');
Run Code Online (Sandbox Code Playgroud)


ben*_*siu 5

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

相同的字段名称会破坏结果对象中的结果列名称

因为使用*不明智,你应该有字段列表......
最重要的是:

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

当你将数据分配给变量时,INSERT或UPDATE(大多数情况下)$ this-> db-> query(...)是好的:http://codeigniter.com/user_guide/database/results.html