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"
}]
QCM sur PHP

5 réflexions sur “Créer un fichier JSON en PHP

  • juillet 1, 2020 à 5:50 pm
    Permalien

    $stmt = $conn->prepare($sql) avec un ; à la fin par example

    Répondre
    • juillet 2, 2020 à 6:33 pm
      Permalien

      Merci pour cette remarque 🙂

      Répondre
  • juin 10, 2022 à 10:13 am
    Permalien

    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

    Répondre
    • juin 10, 2022 à 10:40 am
      Permalien

      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:

      sudo apt-get install php7-mysqlnd
      Répondre
    • juin 10, 2022 à 11:01 am
      Permalien

      Essayez de remplacer

      $res = $stmt->get_result();

      par:

      $res = bindAll($stmt);

      et voir si ça fonctionne.

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *