2010-05-05 12 views
31

Come convertire un PDOStatement in json? C'è una biblioteca là fuori per fare questo?PDOStatement to json

MODIFICA: Devo chiamare jsonify a PDO::FETCH_OBJ. Ci dispiace, grazie per tutte le risposte.

json_encode non è in grado di chiamare jsonify a PDO::FETCH_OBJ.

Grazie.

+0

A quale 'PDOStatement' si riferisce? –

risposta

61

È possibile utilizzare la funzione json_encode integrato php() http://php.net/manual/en/function.json-encode.php

Per codificare i risultati usare qualcosa come

<?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

hai appena json_encode un oggetto PDOStatement? – Galen

+1

Sì, ho fatto quale tipo di lavoro, quando decodifica restituisce un oggetto stdClass. @mediaslave puoi usare json_encode su PDO :: FETCH_OBJ, quando esegui PDO :: FETCH_OBJ crea oggetti di stdClass, questi possono quindi essere codificati in oggetti json che poi decodificano nuovamente in oggetti stdClass. Fai qualche var_dump sui tuoi risultati e vedi :) – Rwky

+1

'PDO :: FETCH_ASSOC' davvero importante altrimenti avrai doppie informazioni – mpgn

8

Utilizzare il metodo fetchAll() della descrizione PDOS per recuperare un array dei valori e quindi passarlo a json_encode().

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

Ho anche trovato molto utile per creare e impostare l'intestazione PHP ('Content-Type: application/json') prima di ritrasmettere l'oggetto JSON restituito da json_encode()

+0

Questo non risponde alla domanda, e anche, come fa l'impostazione di quell'intestazione aiuta prima di fare una decodifica? Se potessi spiegare che potrebbe rientrare in un commento (anche in modifica) nella risposta accettata. –

-1

L'errore del caso appare in ajax:

Invece di usare l'intestazione ('Content-Type ... nel mio file php, ho usato dataType:' JSON 'nel mio file javascript.