首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码点火器中的相互冲突的mysql查询

代码点火器中的相互冲突的mysql查询
EN

Stack Overflow用户
提问于 2018-02-11 08:44:56
回答 1查看 162关注 0票数 1

我在使用两个mysql查询时遇到了冲突错误。我希望使用join语法从数据库中获取两个表,直到我将一个外部函数放入where子句中,该子句将从另一个模型返回一个ID。这使得查询中出现冲突。

这是我的第一个也是主要的模型函数:

代码语言:javascript
复制
function get_festival_data($options = array())
{
    // Qualification
    if(isset($options['festival_Id']))
        $this->db->where('md_festivals.festival_Id', $options['festival_Id']);

    if(isset($options['festival_Status']))
        $this->db->where('festival_Status', $options['festival_Status']);

    $this->db->where('lang_Id', currentLanguageID());

    $this->db->from('md_festivals');

    $this->db->join('md_festival_details', 'md_festival_details.festival_Id = md_festivals.festival_Id');

    $query = $this->db->get();

    if(isset($options['festival_Id']) return $query->row(0);

    return $query->result();
}

这是一个创建全局函数的助手:

代码语言:javascript
复制
function currentLanguageID()
{

    $language = get_instance()->languages_model->get_language_data
    (
        array(
            'lang_Abbr' => config('language_abbr')
        )
    );

    return $language->lang_Id;
}

,它很好地返回ID

这是另一个模型函数:

代码语言:javascript
复制
function get_language_data($options = array())
{
    // Qualification
    if(isset($options['lang_Id']))
        $this->db->where('lang_Id', $options['lang_Id']);

    if(isset($options['lang_Abbr']))
        $this->db->where('lang_Abbr', $options['lang_Abbr']);

    $query = $this->db->get('md_languages');

    if(isset($options['lang_Id']) || isset($options['lang_Abbr']))
        return $query->row(0);

    return $query->result();
}

下面是我遇到的冲突和错误:

错误编号: 1054 'where子句‘中未知列'md_festivals.festival_Id’ 从md_languages中选择*,其中md_festivals.festival_Id = '6‘和festival_Status =1和lang_Abbr = 'fa’ 文件名: D:/xampp/htdocs/aksineh/system/database/DB_driver.php 线路号码: 691

它把两个模型的其中的子句相互之间,并造成冲突!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-11 09:28:47

这个问题通过改变where子句中的顺序而得到解决。我在函数的开头引入了$this->db->where('lang_Id', currentLanguageID()); where子句:

代码语言:javascript
复制
function get_festival_data($options = array())
{
    // Qualification

    $this->db->where('lang_Id', currentLanguageID());


    if(isset($options['festival_Id']))
        $this->db->where('md_festivals.festival_Id', $options['festival_Id']);

    if(isset($options['festival_Status']))
        $this->db->where('festival_Status', $options['festival_Status']);

    $this->db->from('md_festivals');

    $this->db->join('md_festival_details', 'md_festival_details.festival_Id = md_festivals.festival_Id');

    $query = $this->db->get();

    if(isset($options['festival_Id']) return $query->row(0);

    return $query->result();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48729806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档