Я хочу преобразовать образцовый запрос в json с json_encode, он не работает. Но с обычным массивом это делает.
$arr = array("one", "two", "three");
$data["json"] = json_encode($arr);
Вывод
<?php echo "var arr=".$json.";"; ?>
var arr=["one","two","three"];
Но то, когда я пытаюсь преобразовать запрос codeigniter, бросает ошибку. Что это с этим? Это - сообщение об ошибке:
Ошибкой PHP была Серьезность, с которой встречаются: Предупреждающее сообщение: [json] (php_json_encode) тип не поддерживается, кодируется как пустой указатель
И преобразованный "запрос" заканчивается =, я подразумеваю, что образцовый метод похож на это:
{"conn_id":null,"result_id":null,"result_array":[],"result_object":[],"current_row":0,"num_rows":9,"row_data":null}
Я пытаюсь сделать как это
$posts = $this->Posts_model->SelectAll();
$data["posts"] = json_encode($posts);
Между прочим, модель и метод работают просто великолепно, когда я делаю это без json_encode.
Что-то, что я propably делаю неправильно, но вопрос что?
Похоже, вы пытаетесь закодировать объект результата базы данных CodeIgniter, а не массив результатов. Объект результата базы данных действует как обертка вокруг курсора в наборе результатов. Вы должны получить массив результатов из объекта результата, а затем закодировать его.
Код вашей модели выглядит примерно так:
function SelectAll()
{
$sql = 'SELECT * FROM posts';
// Return the result object
return $this->db->query($sql);
}
Он должен быть примерно таким:
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();
}
Это вернет массив объектов, которые вы можете закодировать в JSON.
Причина, по которой вы получаете ошибку при попытке закодировать объект результата, заключается в том, что он имеет переменную-член resource, которая не может быть закодирована в JSON. Эта переменная ресурса фактически является курсором в наборе результатов.