Créer un fichier JSON en PHP
Peut-être que vous ayez besoin de JSON pour alimenter vos visualisations graphiques, ou que vous ayez simplement besoin d’envoyer une requête HTTP avec un JSON correctement formaté. Ce tutoriel vous explique comment créer un fichier JSON correctement formaté.
Supposons que nous avons la table suivante, et nous voulons que le résultat soit sous forme JSON.
+--------------+ | Name | +--------------+ | Alex | | Emily | | Bob | | Thomas | | Jean | +--------------+
Dans le code PHP suivant, nous allons convertir le résultat du requête de base de données en JSON. Le résultat souhaité est une simple liste de noms. Cela signifie que le JSON aura comme clé « name » et une valeur associé.
<?php /*...*/ $sql = "SELECT name FROM users"; $stmt = $conn->prepare($sql); $stmt->execute(); $res = $stmt->get_result(); // résultat de BD $json = "["; //Ajouter le crochet au début. $i=0; // Index pour gérer les virgules. while ($row = $res->fetch_assoc()) { if ($i == 0) // Exécuter ceci si le 1er bloc. { $json .= '{"name" : "'.$row["name"].'" }'; } else { // préfixez le JSON avec une virgule pour chaque itération. $json .= ', {"name" : "'.$row["name"].'" }'; } $i++; } $json .= "]"; // fermer le JSON echo $json; ?>
La sortie :
[{ "name": "Alex" }, { "name": "Emily" }, { "name": "Bob" }, { "name": "Thomas" }, { "name": "Jean" }]
$stmt = $conn->prepare($sql) avec un ; à la fin par example
Merci pour cette remarque 🙂
bonjour, merci pour le code. mais chez moi il me dit que la méthode get_result() n’est pas défini, je suis la version PHP 7.4.12 et ma base de données est sur PostgreSQL 4.20
get_result() n’est disponible que lorsque PHP utilise effectivement le pilote msyqlnd pour se connecter au serveur de base de données. Cela nécessite que PHP soit compilé pour utiliser le pilote msyqlnd avec les extensions de base de données MySql et que le pilote msyqlnd soit activé et fonctionne. Si ces conditions ne sont pas remplies, des fonctions comme get_result, fetch_all, … de mysqli n’existent pas et ne fonctionnent pas.
Décommenté extension=php_mysqli_mysqlnd.dll dans php.ini ; et redémarré les services Apache2.2 et MySQL.
Si vous n’avez pas l’extension installez-le:
Essayez de remplacer
par:
et voir si ça fonctionne.