Der vom SQL-Abfrage-JSON von MySQL 8.0 zurückgegebene Datentyp ist String statt Array
<p>Ich habe in MySQL 8.0 eine Tabelle wie unten gezeigt erstellt: </p>
<pre class="brush:php;toolbar:false;">CREATE TABLE `airline_table` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
„info“ json DEFAULT NULL,
PRIMÄRSCHLÜSSEL („id“)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;</pre>
<p>Es enthält Daten vom Typ JSON. Ich habe einige Daten wie folgt eingefügt: </p>
<pre class="brush:php;toolbar:false;">INSERT INTO Airline_table VALUES ('1','{"data": [{"city": "Houston", "state": „TX“},
{"Stadt": "Los Angeles", "Bundesstaat": "CA"}], "Fluggesellschaft": "UA", "AA"]}');</pre>
<p>Ich verwende PHP, um auf die Datenbank zuzugreifen und hoffe, den Wert von „airline“ als Array zu erhalten. </p>
<pre class="brush:php;toolbar:false;"><?php
$mysqli = new mysqli("localhost", "root", "aproot2019", "test");
$sql = "SELECT id, info -> '$.airline' AS Airline FROM Airline_table";
$result = $mysqli->query($sql);
$row = $result->fetch_array();
//print_r($row);
$airline = $row['airline'];
echo $airline . "<br>" // ["UA", "AA"] , das ist ein String statt eines Arrays, wie kann ich ein Array erhalten?
echo is_array($airline) ? 'Array' : 'kein Array' "<br>";
echo is_string($airline) ? 'String' : 'kein String'
$mysqli->close();
?></pre>
<p>Aber es wird ein String ausgegeben, kein Array!
Das ist wirklich ärgerlich, JSON in MySQL ist schwer zu verstehen. </p>