2010-08-05 65 views
0

我使用CodeIgniter的MySQL ActiveRecord提交查询,但在使用“select”函数时遇到了一些问题。例如,这个MySQL查询在phpMyAdmin中完美工作:MySQL Active Record问题

SELECT review_id, firms_name 
FROM reviews AS r 
JOIN firms AS f ON f.firms_id = r.review_target_id 
WHERE r.review_id =3 
ORDER BY r.review_timestamp DESC 
LIMIT 0 , 30 

它给了我两列,正是我所需要的。

然而,这只是给了我一个栏,“REVIEW_ID”:

$this->db->select('review_id', 'firms_name'); 
$this->db->from('reviews as r'); 
$this->db->join('firms as f', 'f.firms_id = r.review_target_id'); 
$this->db->where('r.review_id', $id); 
$this->db->order_by('r.review_timestamp', 'desc'); 
$query = $this->db->get(); 

如果我删除了“选择”条款,我得到我所需要的所有信息,但想了解我是什么做错了,我可以如何减少我的数据库的负载。有什么想法吗?

回答

3
$this->db->select('review_id', 'firms_name'); 

应该这样写(列名应该是一个字符串):

$this->db->select('review_id, firms_name'); 

此外,请记住,你可以随时使用$this->db->last_query();以输出上次运行的查询,让你可以看到正在执行的确切SQL语句。

+0

感谢您的快速响应。一如往常,如果我更加小心,我不会有这些问题开始。非常感谢。 – tchaymore 2010-08-05 23:54:57

+0

@tchaymore:很高兴能帮到你! – 2010-08-06 13:50:42