Jenis data yang dikembalikan oleh pertanyaan SQL MySQL 8.0 JSON ialah rentetan dan bukannya tatasusunan
P粉099985373
2023-08-28 19:46:01
<p>Saya mencipta jadual dalam MySQL 8.0 seperti yang ditunjukkan di bawah: </p>
<pre class="brush:php;toolbar:false;">BUAT MEJA `airline_table` (
`id` int tidak ditandatangani BUKAN NULL AUTO_INCREMENT,
`info` json DEFAULT NULL,
KUNCI UTAMA (`id`)
) ENJIN=InnoDB AUTO_INCREMENT=2 CARSET lalai=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;</pre>
<p>Ia mengandungi data jenis JSON, saya memasukkan beberapa data seperti berikut: </p>
<pre class="brush:php;toolbar:false;">MASUKKAN KE DALAM NILAI jadual_syarikat penerbangan ('1','{"data": [{"city": "Houston", "negeri": "TX"},
{"bandar": "Los Angles", "negeri": "CA"}], "syarikat penerbangan": ["UA", "AA"]}');</pre>
<p>Saya menggunakan php untuk mengakses pangkalan data dan berharap untuk mendapatkan nilai "syarikat penerbangan" sebagai tatasusunan. </p>
<pre class="brush:php;toolbar:false;"><?php
$mysqli = mysqli baharu("localhost", "root", "aproot2019", "test");
$sql = "PILIH id, maklumat -> '$.airline' SEBAGAI syarikat penerbangan DARI airline_table";
$result = $mysqli->query($sql);
$row = $result->fetch_array();
//print_r($baris);
$airline = $row['airline'];
echo $airline . "<br>"; // ["UA", "AA"] , ini ialah rentetan dan bukannya tatasusunan, bagaimana saya boleh mendapatkan tatasusunan?
echo is_array($airline) ? 'Array' : 'bukan Array'
echo is_string($airline) ? 'String' : 'not a String'
$mysqli->tutup();
?></pra>
<p>Tetapi ia mengeluarkan rentetan, bukan tatasusunan!
Ini benar-benar menjengkelkan, JSON dalam MySQL sukar difahami. </p>
Adakah anda mempertimbangkan menyahkod JSON?