MySQL 8.0的SQL查询JSON返回的数据类型为字符串而非数组
P粉099985373
2023-08-28 19:46:01
<p>我在MySQL 8.0中创建了一个表,如下所示:</p>
<pre class="brush:php;toolbar:false;">CREATE TABLE `airline_table` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`info` json DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;</pre>
<p>它包含了JSON类型的数据,我插入了一些数据,如下:</p>
<pre class="brush:php;toolbar:false;">INSERT INTO airline_table VALUES ('1','{"data": [{"city": "Houston", "state": "TX"},
{"city": "Los Angles", "state": "CA"}], "airline": ["UA", "AA"]}');</pre>
<p>我使用php访问数据库,希望将"airline"的值作为一个数组获取。</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"] , 这是一个字符串而不是一个数组,我怎样才能得到一个数组呢?
echo is_array($airline) ? 'Array' : 'not an Array' . "<br>"; // 不是一个数组
echo is_string($airline) ? 'String' : 'not a String' . "<br>" ; // 字符串
$mysqli->close();
?></pre>
<p>但是它输出的是一个字符串,而不是一个数组!
这真的很烦人,MySQL中的JSON很难理解。</p>
您是否考虑过解码JSON?