【问题标题】:Where clause in Codeigniter Query Builder ClassCodeigniter 查询生成器类中的 Where 子句
【发布时间】:2016-10-22 12:47:47
【问题描述】:

我在尝试从两个 MySQl 表中获取数据时遇到了麻烦。 在第一个表中,我存储了图像文件名;在第二个表中,我存储了有关每个图像的信息; info 有两种语言,en 和 it。当然,并非第一个表中的所有图像在第二个表中都有信息。 我正在尝试通过以下方式获取所选语言的图像信息:

$this->db->select ('
            tbl_images.image,
            tbl_infos.info
            ');

$this->db->from('tbl_images');
$this->db->join('tbl_infos', 'tbl_images.id = tbl_infos.id', 'left');
$this->db->where('tbl_images.id', $id);
$this->db->where('tbl_infos.lang', 'en');

现在...如果 tbl_infos 表有文本,则查询返回正确的数据,但如果没有存储信息,我会收到错误,因为没有检索到图像;如果我删除 lang where 子句,如果没有存储信息,我会得到 iamge...但是我会得到两次带有信息的图像!!

我快疯了,完全卡在这个问题上……我该如何解决这个问题? 非常感谢

【问题讨论】:

    标签: codeigniter query-builder


    【解决方案1】:

    试试这个

    $this->db->join('tbl_infos', 'tbl_images.id = tbl_infos.id');

    【讨论】:

      【解决方案2】:

      我真傻……我在同一个 JOIN 行中编写了第二个条件。 所以,下面的 JOIN:

      $this->db->join('tbl_infos', 'tbl_images.id = tbl_infos.id', 'left');
      

      变成:

      $this->db->join('tbl_infos', 'tbl_images.id = tbl_infos.id AND tbl_infos.lang = "en"', 'left');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-09
        • 1970-01-01
        • 2013-09-16
        相关资源
        最近更新 更多