Отправка данных в json


Как бы я преобразовал PDOStatement в json? Есть ли библиотека для этого?

РЕДАКТИРОВАТЬ: Мне нужно jsonify PDO::FETCH_OBJ. Извините, спасибо за все ответы.

json_encode не имеет возможности jsonify a PDO::FETCH_OBJ.

Спасибо.

 34
Author: aksu, 2010-05-05

6 answers

Вы можете использовать встроенную функцию php json_encode() http://php.net/manual/en/function.json-encode.php

Для кодирования результатов используйте что-то вроде

<?php
$pdo = new PDO("mysql:dbname=database;host=127.0.0.1", "user", "password");
$statement = $pdo->prepare("SELECT * FROM table");
$statement->execute();
$results = $statement->fetchAll(PDO::FETCH_ASSOC);
$json = json_encode($results);
 67
Author: Rwky, 2018-03-02 21:43:46

Используйте fetchAll() метод PDOStatement для извлечения массива значений, а затем передачи его в json_encode().

$resultJSON = json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
 8
Author: Amber, 2010-05-05 02:34:44
$array = $statement->fetchAll( PDO::FETCH_ASSOC );
$json = json_encode( $array );
 4
Author: Galen, 2010-05-05 02:36:18

Я также счел очень полезным вставить и установить заголовок PHP ('Content-Type: application/json') перед отправкой обратно объекта JSON, возвращенного json_encode()

 2
Author: Rjw, 2017-09-25 20:23:04
$data = array();
    if($stmt->execute()){
      while ($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
            $data['data'] = $row;
        }
      }
  }

if(!empty($data)){
    header("Access-Control-Allow-Origin: *");//this allows coors
    header('Content-Type: application/json');
    print json_encode($data);
}else{
  echo 'error';
}
 2
Author: Ruturajsinh Zala, 2018-05-28 09:22:21

Ошибка обращения появляется в ajax:

Вместо использования заголовка ('Content-Type... в моем файле php я использовал тип данных: 'JSON' в моем файле javascript.

 -1
Author: Adonai Diófanes, 2016-11-29 12:26:11