Преобразовать запрос codeigniter в json?

Я хочу преобразовать образцовый запрос в 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 делаю неправильно, но вопрос что?

14
задан marko 10 March 2010 в 19:14
поделиться

1 ответ

Похоже, вы пытаетесь закодировать объект результата базы данных 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. Эта переменная ресурса фактически является курсором в наборе результатов.

24
ответ дан 1 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: