我一直试图弄清楚为什么在 mysql 中有效的查询在 CodeIgniter 中无效。这是代码:
$this->db->select('*');
$this->db->from('table');
$this->db->where('table.project_id', $project_id);
$this->db->where('table.user_id', $user_id);
$q = $this->db->get();
$result = $q->result();
log_message('error', 'error message='.$this->db->_error_message());
log_message('error', 'error number='.$this->db->_error_number());
log_message('error', 'result='.print_r($result, true));
log_message('error', 'last query='.$this->db->last_query());
这方面的日志输出如下所示:
ERROR - 2013-09-20 08:53:03 --> error message=
ERROR - 2013-09-20 08:53:03 --> error number=0
ERROR - 2013-09-20 08:53:03 --> result=Array
(
)
ERROR - 2013-09-20 08:53:03 --> last query=SELECT `table`.*
FROM (`table`)
WHERE `table`.`project_id` = '99'
AND `table`.`user_id` = '1927'
当我在 mysql 中运行查询时,我得到:
mysql> SELECT `table`.*
-> FROM (`table`)
-> WHERE `table`.`project_id` = '99'
-> AND `table`.`user_id` = '1927';
+------+---------+----------+------------+----------------+
| id | user_id | group_id | project_id | accepted_terms |
+------+---------+----------+------------+----------------+
| 2328 | 1927 | 8 | 99 | 0 |
+------+---------+----------+------------+----------------+
1 row in set (0.00 sec)
可以看到,CI 正在构造的查询是有效的,它会在 mysql 客户端返回一个结果集。但是,查询在 CodeIgniter 中返回一个空数组。此页面上还有许多其他查询。我一辈子都想不通为什么这个查询在 CodeIgniter 中不起作用?