Le type de données renvoyé par la requête SQL JSON de MySQL 8.0 est une chaîne au lieu d'un tableau
P粉099985373
2023-08-28 19:46:01
<p>J'ai créé une table dans MySQL 8.0 comme indiqué ci-dessous : </p>
<pre class="brush:php;toolbar:false;">CREATE TABLE `airline_table` (
`id` int non signé NOT NULL AUTO_INCREMENT,
`info` json PAR DÉFAUT NULL,
CLÉ PRIMAIRE (`id`)
) MOTEUR=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;</pre>
<p>Il contient des données de type JSON, j'ai inséré quelques données comme suit : </p>
<pre class="brush:php;toolbar:false;">INSÉRER DANS LES VALEURS de la table_avion ('1','{"données" : [{"ville" : "Houston", "état" : "TX"},
{"ville" : "Los Angles", "état" : "CA"}], "compagnie aérienne" : ["UA", "AA"]}');</pre>
<p>J'utilise php pour accéder à la base de données et j'espère obtenir la valeur de "compagnie aérienne" sous forme de tableau. </p>
<pre class="brush:php;toolbar:false;"><?php
$mysqli = new mysqli("localhost", "root", "aproot2019", "test");
$sql = "SELECT id, info -> '$.airline' AS compagnie aérienne FROM compagnie_table";
$result = $mysqli->query($sql);
$row = $result->fetch_array();
//print_r($ligne);
$compagnie aérienne = $row['compagnie aérienne'];
echo $airline . "<br>"; // ["UA", "AA"] , c'est une chaîne au lieu d'un tableau, comment puis-je obtenir un tableau ?
echo is_array($airline) ? 'Array' : 'pas un tableau' '<br>'';
echo is_string($airline) ? 'String' : 'pas une chaîne' .
$mysqli->close();
?>≪/pré>
<p>Mais il génère une chaîne, pas un tableau !
C'est vraiment ennuyeux, JSON dans MySQL est difficile à comprendre. </p>
Avez-vous pensé à décoder JSON ?