【问题标题】:How to SELECT a JSON column in MySQL and return as an Array()如何在 MySQL 中选择 JSON 列并作为 Array() 返回
【发布时间】:2021-03-28 07:16:34
【问题描述】:

我在 MySQL 表中有一个 JSON 列(称为 json_col):

{'a':9, 'b':8, 'c':7}

我想选择列“json_col”及其每个键和值,并将其作为 array() 返回,以便我可以在 PHP 中处理它。

我该怎么做?

我试过 JSON_EXTRACT() 但这需要我指定 json 元素,它只返回相应的值。

这是“我的努力”:

  $query_string = '
    SELECT JSON_EXTRACT( json_col, "$.a" )
    FROM settings
    WHERE id = "4"
    LIMIT 1
  ';
  $result = mysqli_query( $GLOBALS['db_link'], $query_string ) or die( mysqli_error( $GLOBALS['db_link'] ) );
  $row = mysqli_fetch_row( $result );
  mysqli_free_result( $result );

当我回显 $row[0] 时,我得到“a”的值为 9!

【问题讨论】:

  • 向我们展示您的努力以及您确切遇到问题的地方。您是否遇到选择 json 列的问题?或者您是否在从数据库中成功加载值后将 json 字符串转换为数组时遇到问题?
  • 当然@Rafal!更新了我的 OQ!
  • 执行 sql SELECT json_col FROM settings WHERE id = "4" LIMIT 1 会给你'{'a':9, 'b':8, 'c':7}',对吗?
  • 正是@Rafal。在早期的开发步骤中这样做了。所以也许我需要然后使用 PHP 将 JSON 数据分解成一个数组()......对吗?我在想并希望也许这个数组可以由 MySQL 生成

标签: php mysql arrays json


【解决方案1】:

只需更改您的查询以选择 json:

$query_string = '
    SELECT json_col
    FROM settings
    WHERE id = "4"
    LIMIT 1
';

像以前一样执行查询

$result = mysqli_query( $GLOBALS['db_link'], $query_string ) or die( mysqli_error( $GLOBALS['db_link'] ) );
$row = mysqli_fetch_row( $result );

然后将其转换为带有json_decode的数组

$myArray = json_decode($row['json_col'], true);

你可以像这样检查它的值:

echo "<pre>";
print_r($myArray);
echo "</pre>";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    • 2015-12-13
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    相关资源
    最近更新 更多