2010-05-05 9 views
31

¿Cómo puedo convertir un PDOStatement en json? ¿Hay una biblioteca para hacer esto?PDOSdeclaración a json

EDITAR: Necesito conjurar un PDO::FETCH_OBJ. Perdón, gracias por todas las respuestas.

json_encode no tiene la capacidad de jsonify a PDO::FETCH_OBJ.

Gracias.

+0

¿A qué 'PDOStatement' se refiere? –

Respuesta

61

Puede utilizar la función json_encode php incorporado() http://php.net/manual/en/function.json-encode.php

Para codificar los resultados de usar algo como

<?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); 
+9

¿acabas de json_encode un objeto PDOStatement? – Galen

+1

Sí, hice qué tipo de trabajo funciona, cuando decodifica devuelve un objeto stdClass. @mediaslave puede usar json_encode en PDO :: FETCH_OBJ, cuando ejecuta PDO :: FETCH_OBJ crea objetos de stdClass, estos pueden codificarse en objetos json que luego se decodifican en objetos stdClass. Haga algunos var_dumps en sus resultados y vea :) – Rwky

+1

'PDO :: FETCH_ASSOC' realmente importante; de ​​lo contrario, tendrá doble información – mpgn

8

Utilice el método fetchAll() de PDOStatement para recuperar una matriz de los valores, y luego pase eso a json_encode().

$resultJSON = json_encode($stmt->fetchAll(PDO::FETCH_ASSOC)); 
4
$array = $statement->fetchAll(PDO::FETCH_ASSOC); 
$json = json_encode($array); 
2

También he encontrado que es muy útil para insertar y configurar el encabezado PHP ('Content-Type: application/json') antes de devolver el objeto JSON devuelto por json_encode()

+0

Esto no responde a la pregunta, y también, ¿cómo ayuda la configuración de ese encabezado antes de hacer una decodificación? Si pudieras explicar que podría encajar en un comentario (incluso sobre la edición) en la respuesta aceptada. –

-1

Error de caso aparece en ajax:

En lugar de usar el encabezado ('Content-Type ... en mi archivo php, utilicé dataType:' JSON 'en mi archivo javascript.