2010-08-07 8 views
6

Existe-t-il une fonction ou une classe en PHP permettant de passer un jeu d'enregistrements MySQL et d'obtenir une chaîne JSON retournée qui peut être renvoyée à une fonction JavaScript dans une requête Ajax?Convertir l'ensemble d'enregistrements MySQL en chaîne JSON en PHP

quelque chose comme ceci:

function recordSetToJson($recordset) { 
while($rs1 = mysql_fetch_row($recordset)) { 
    for($count = 0; $count < count($rs1); $count++) { 
    // read and add field to JSON 
    } 
    $count++; 
} 

return $jasonstring 
} 

Répondre

12

Cela devrait fonctionner:

function recordSetToJson($mysql_result) { 
$rs = array(); 
while($rs[] = mysql_fetch_assoc($mysql_result)) { 
    // you don´t really need to do anything here. 
    } 
return json_encode($rs); 
} 

Si vous avez besoin de manipuler le jeu de résultats, vous pouvez utiliser la version suivante -Plus que plexité vous permet d'ajouter une fonction de rappel sera appelé sur chaque enregistrement et doit retourner cet enregistrement déjà traité:

function recordSetToJson($mysql_result, $processing_function = null) { 
$rs = array(); 
while($record = mysql_fetch_assoc($mysql_result)) { 
    if(is_callable($processing_function)){ 
    // callback function received. Pass the record through it. 
    $processed = $processing_function($record); 
    // if null was returned, skip that record from the json. 
    if(!is_null($processed)) $rs[] = $processed; 
    } else { 
    // no callback function, use the record as is. 
    $rs[] = $record; 
    } 
} 
return json_encode($rs); 
} 

l'utiliser comme ceci:

$json = recordSetToJson($results, 
    function($record){ 
     // some change you want to make to every record: 
     $record["username"] = strtoupper($record["username"]); 
     return $record; 
    }); 
+0

Et s'il veut manipuler le jeu de résultats en quelque sorte? – NullUserException

+0

La solution de Sebastian semble fonctionner –

+1

@NullUserException il ne devrait pas utiliser une fonction de ce générique alors. –

5

Y at-il une fonction ou une classe en PHP que je peux passer un recordset MySQL et je reçois une chaîne JSON retournée qui peut être renvoyé à une fonction JavaScript dans un Demande Ajax?

Oui: json_encode()

+0

oui merci. Le problème que j'avais était de préparer un tableau PHP contenant plusieurs jeux d'enregistrements mysql qui peuvent ensuite être encodés. –

+0

Je viens de trouver quelque chose qui pourrait fonctionner. www.barattalo.it/2010/01/25/10-php-usefull-functions-for-mysql-stuff/. ___ Cependant, je ne suis pas en mesure de référencer les champs en javascript. –

Questions connexes