CI:会话变量和json_encode

时间:2011-07-28 21:15:11

标签: json session codeigniter

我已经添加到我的会话中的值,我想将其传递给查询,如下所示:

$eventTypeID = $this->session->userdata('eventtypeID');
$this->session->unset_userdata('eventtypeID');
$venueCityID = $this->session->userdata('venuecityID');
$this->session->unset_userdata('venuecityID');
echo json_encode($this->event_model->getSearchEvents($eventTypeID, $venueCityID));

我遇到的问题是,当提取/取消设置先前变量时,最后一行(echo json_encode ...)将不会运行。如果我注释掉变量,并简单地运行:

echo json_encode($this->event_model->getSearchEventsAll());

然后一切顺利。有人可以告诉我为什么json_encode似乎不能很好地与会话以及我如何能够使这个工作?谢谢!

EDITED

经过多次挫折之后,现在看来问题可能与会话无关,而是输出我的查询:

$this->db->_compile_select();     
$q = $this->db->get();
echo $this->db->last_query();  

所有以前都工作正常,我能够“拦截”查询以查看被调用的内容,但现在使用_compile& last_query,没有任何反应????

1 个答案:

答案 0 :(得分:0)

运行json_last_error()以查看是否遇到编码数据的错误。请参阅文档页面上的示例以了解正确用法:

http://www.php.net/manual/en/function.json-last-error.php

我们不确定$this->event_model->getSearchEvents($eventTypeID, $venueCityID)返回VS $this->event_model->getSearchEvents()是什么,但绝对不应该有任何与变量使用相关的问题。

与往常一样,在输出上尝试var_dump()(在解码之前尝试)并查看函数的两个返回值之间的差异。您甚至可能在函数本身中遇到一个错误,该错误正在停止执行 - 确保error_reporting()处于完全爆炸状态。