Rumah  >  Soal Jawab  >  teks badan

Jenis data yang dikembalikan oleh pertanyaan SQL MySQL 8.0 JSON ialah rentetan dan bukannya tatasusunan

<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>
P粉099985373P粉099985373440 hari yang lalu609

membalas semua(1)saya akan balas

  • P粉253518620

    P粉2535186202023-08-29 14:31:58

    Adakah anda mempertimbangkan menyahkod JSON?

    $json = json_decode('{"data": [{"city": "Houston", "state": "TX"}, {"city": "Los Angles", "state": "CA"}], "airline": ["UA", "AA"]}');
    
    // 对于您的情况,将是:
    // $json = json_decode($row['airline']);
    echo var_dump($json->airline);
    /**
     * array(2) {
      [0]=>
      string(2) "UA"
      [1]=>
      string(2) "AA"
    }
    
    

    balas
    0
  • Batalbalas