【问题标题】:CodeIgniter MySQL query not workingCodeIgniter MySQL 查询不工作
【发布时间】:2011-06-17 20:45:02
【问题描述】:

我正试图让这个查询在 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();

我是否做错了什么而我错过了它? 如果问题出在其他地方,我已经包含了整个函数调用?我已经做了很多次了,没有任何问题。

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();
}

【问题讨论】:

  • 也许 CI 的 query() 方法不喜欢换行符。
  • 感谢 BoltClock。我已经尝试过没有。我也有使用换行符编写的查询。

标签: php mysql codeigniter activerecord


【解决方案1】:
SELECT writing_quests.*,(从 members_quests_completed 中放入所需字段) FROM writing_quests 左加入 members_quests_completed ....

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

仅供参考,使用 * 是不明智的,您应该有字段列表...
什么是最重要的:

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

$this->db->query ( ... ) 在 INSERT 或 UPDATE(主要是)时很好,当您将数据分配给变量时:http://codeigniter.com/user_guide/database/results.html

【讨论】:

  • 添加了一个字段列表,同样的结果,同样的错误。这在 mysql 命令行中运行良好。
  • 是的,它在 mysql 中运行良好。这就是我如此困惑的原因。
  • 答案句柄 CI 部分的第二部分
【解决方案2】:

我觉得应该是这样的:

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

【讨论】:

    猜你喜欢
    • 2018-07-19
    • 2022-01-03
    • 2018-09-26
    • 2019-06-11
    • 2019-07-24
    • 1970-01-01
    • 2011-10-11
    • 2012-03-01
    • 2012-07-07
    相关资源
    最近更新 更多