Отправка данных в json
Как бы я преобразовал PDOStatement
в json? Есть ли библиотека для этого?
РЕДАКТИРОВАТЬ: Мне нужно jsonify PDO::FETCH_OBJ
. Извините, спасибо за все ответы.
json_encode
не имеет возможности jsonify a PDO::FETCH_OBJ
.
Спасибо.
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);
Используйте fetchAll()
метод PDOStatement для извлечения массива значений, а затем передачи его в json_encode()
.
$resultJSON = json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
$array = $statement->fetchAll( PDO::FETCH_ASSOC );
$json = json_encode( $array );
Я также счел очень полезным вставить и установить заголовок PHP ('Content-Type: application/json') перед отправкой обратно объекта JSON, возвращенного json_encode()
$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';
}
Ошибка обращения появляется в ajax:
Вместо использования заголовка ('Content-Type... в моем файле php я использовал тип данных: 'JSON' в моем файле javascript.