Codeigniter 查询生成器无法正常工作
Codeigniter query builder does not work correctly
有人可以解释一下这些代码之间的区别吗?
因为查询生成器没有给出正确的结果,但是另一个查询给出了正确的结果。
我看不到有什么区别?
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
给出正确结果的查询
SELECT m.*,c.COUNTRY_NAME FROM members m LEFT JOIN country c ON c.COUNTRY_ALPHA2_CODE = m.location WHERE c.LANG = "EN";
试试这个:
$this->db->select('m.*');
$this->db->select('c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
要使用 CI 生成完整的查询字符串,您需要添加以下行:
$query=$db->get();
你的方法。
完整代码如下所示:
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
$query=$db->get();
在此行之后,您可以检查 SQL 字符串输出:
echo $this->db->query();
您从这里继续 Generating Query Results 征求您的意见
回复评论:
'$this->db->where('c.LANG', 'EN');'
does not work. this line return
always first language in db
您需要将语言查询放入连接中:
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','(c.COUNTRY_ALPHA2_CODE = m.location AND c.LANG=\'EN\')', 'left');
$query=$db->get();
有人可以解释一下这些代码之间的区别吗? 因为查询生成器没有给出正确的结果,但是另一个查询给出了正确的结果。
我看不到有什么区别?
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
给出正确结果的查询
SELECT m.*,c.COUNTRY_NAME FROM members m LEFT JOIN country c ON c.COUNTRY_ALPHA2_CODE = m.location WHERE c.LANG = "EN";
试试这个:
$this->db->select('m.*');
$this->db->select('c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
要使用 CI 生成完整的查询字符串,您需要添加以下行:
$query=$db->get();
你的方法。
完整代码如下所示:
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
$query=$db->get();
在此行之后,您可以检查 SQL 字符串输出:
echo $this->db->query();
您从这里继续 Generating Query Results 征求您的意见
回复评论:
'$this->db->where('c.LANG', 'EN');'
does not work. this line return always first language in db
您需要将语言查询放入连接中:
$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','(c.COUNTRY_ALPHA2_CODE = m.location AND c.LANG=\'EN\')', 'left');
$query=$db->get();