CodeIgniter中的奇怪错误,当我查询两个关系表... o_O时

时间:2012-05-13 03:43:06

标签: codeigniter relational-database

当我运行活动记录查询时,我得到了一个奇怪的错误(或者我可能只是愚蠢)。看看这个:

$results = $this->db->
  select('cd.casino_name, cd.casino_opened, cd.casino_latitude, cd.casino_longitude')->
  from('casino_data as cd, casino_cities as cc')->
  where('cd.city_id',$city_id)->
  where('cd.city_id=cc.city_id')->
  get()->result_array();

然后我明白了:

Error Number: 1054

Unknown column 'cd.city_id=cc.city_id' in 'where clause'

SELECT `cd`.`casino_name`, `cd`.`casino_opened`, `cd`.`casino_latitude`, `cd`.`casino_longitude`
FROM (`m_casino_data` as cd, `m_casino_cities` as cc)
WHERE `cd`.`city_id` =  1
AND `cd`.`city_id=cc`.`city_id`

Filename: httpdocs/_dev/libraries/Test.php

Line Number: 649

Sh * t发生了......或者在v2.0中CI已经在DB类中被更改过了?

帮助PLZ ...... thx

2 个答案:

答案 0 :(得分:1)

问题在于where子句

$results = $this->db->
select('cd.casino_name, cd.casino_opened, cd.casino_latitude, cd.casino_longitude')->
from('casino_data as cd, casino_cities as cc')->
where('cd.city_id',$city_id)->
where('cd.city_id','cc.city_id')->//this would produce WHERE cd.city_id = cc.city_id
get()->result_array();

答案 1 :(得分:0)

CodeIgniter的AR保护有时效果不佳。在这种情况下,我认为您应该使用可选参数FALSE来避免自动保护。但并非所有函数都接受此参数 - 但where是!

  

$this->db->where()接受可选的第三个参数。如果将其设置为FALSE,CodeIgniter将不会尝试使用反引号来保护您的字段或表名。

请参阅documentation(您可以在4. Custom string附近找到。)