You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用CodeIgniter的from()重复指定同表时出现‘Not unique table/alias’错误

解决CodeIgniter 3中“Not unique table/alias”错误

错误原因

你的模型代码里重复执行了$this->db->from('quiz_table');,这会导致生成的SQL语句两次引用quiz_table但未指定别名,数据库无法区分同一个表的多次引用,因此抛出该错误。

修正后的代码

删除多余的那行$this->db->from('quiz_table');即可,以下是修正后的完整方法:

function getSingleQuizQuestionDataFromDB($quizId)
{        
    try {
        $this->db->select('quiz_table.quizName');
        $this->db->select('quiz_table.creatorName');
        $this->db->select('quiz_table.rating');
        $this->db->select('question_table.questionId');
        $this->db->select('question_table.questionTitle');
        $this->db->select('question_table.correctAnswer');
        $this->db->select('answer_table.answer');
        $this->db->from('quiz_table');
        $this->db->where('quiz_table.quizId',$quizId);
        $this->db->join('question_table','question_table.quizId = quiz_table.quizId','INNER');
        $this->db->join('answer_table','answer_table.questionId= question_table.questionId','INNER');
        $this->db->group_by(['quiz_table.quizId', 'question_table.questionId']);
        $result = $this->db->get();

        $singleQuizQuestionData= $result->result_array();
        return $singleQuizQuestionData;
    } catch (Exception $e) {
        log_message('error', $e->getMessage());
        return [];
    }
}

额外优化建议

  • 给表设置别名,让代码更简洁易读:
    $this->db->select('q.quizName, q.creatorName, q.rating');
    $this->db->select('qt.questionId, qt.questionTitle, qt.correctAnswer');
    $this->db->select('a.answer');
    $this->db->from('quiz_table q');
    $this->db->where('q.quizId',$quizId);
    $this->db->join('question_table qt','qt.quizId = q.quizId','INNER');
    $this->db->join('answer_table a','a.questionId= qt.questionId','INNER');
    
  • 异常捕获中建议开启日志记录,方便后续排查问题;同时返回空数组而非null,避免视图处理数据时出现报错。

内容的提问来源于stack exchange,提问作者Kavishka Rajapakshe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:15:18