当我运行活动记录查询时,我得到了一个奇怪的错误(或者我可能只是愚蠢)。看看这个:
$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
答案 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
附近找到。)