1

我一直试图弄清楚为什么在 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 中不起作用?

4

2 回答 2

1

在您的 log_message 条目之后放入一个 die 语句,再次运行代码并查看您在手动运行查询时是否仍然看到结果。您看到的代码可能是正确的,而其他地方正在插入数据。

于 2013-09-20T15:47:18.303 回答
0

更改此行并尝试一次:

$result = $q->result();

至:

$result = $q->result_array();
于 2013-09-20T14:08:52.347 回答