我想用json_encode将模型查询转换为json,它不起作用.但是使用普通阵列确实如此.
$arr = array("one", "two", "three");
$data["json"] = json_encode($arr);
Run Code Online (Sandbox Code Playgroud)
产量
<?php echo "var arr=".$json.";"; ?>
var arr=["one","two","three"];
Run Code Online (Sandbox Code Playgroud)
但是当我尝试转换查询时,codeigniter会抛出错误.那是什么意思?这是错误消息:
遇到PHP错误严重性:警告消息:[json](php_json_encode)类型不受支持,编码为null
转换后的"查询"结果=我的意思是模型方法是这样的:
{"conn_id":null,"result_id":null,"result_array":[],"result_object":[],"current_row":0,"num_rows":9,"row_data":null}
Run Code Online (Sandbox Code Playgroud)
我试着这样做
$posts = $this->Posts_model->SelectAll();
$data["posts"] = json_encode($posts);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,当我没有json_encode时,模型和方法工作得很好.
我可能做错了什么,但问题是什么?
Ste*_*ran 24
您似乎正在尝试编码CodeIgniter数据库结果对象而不是结果数组.数据库结果对象充当游标到结果集的包装器.您应该从结果对象中获取结果数组,然后对其进行编码.
您的模型代码似乎是这样的:
function SelectAll()
{
$sql = 'SELECT * FROM posts';
// Return the result object
return $this->db->query($sql);
}
Run Code Online (Sandbox Code Playgroud)
它应该更像是这样的:
function SelectAll()
{
$sql = 'SELECT * FROM posts';
$query = $this->db->query($sql);
// Fetch the result array from the result object and return it
return $query->result();
}
Run Code Online (Sandbox Code Playgroud)
这将返回一个可以用JSON编码的对象数组.
您尝试编码结果对象时出错的原因是因为它有一个无法用JSON编码的资源成员变量.该资源变量实际上是进入结果集的游标.