【问题标题】:Can't access JSON object from MySQL fetch result, PHP无法从 MySQL 获取结果 PHP 访问 JSON 对象
【发布时间】:2019-01-03 13:27:21
【问题描述】:

上下文,我正在做这个具有更新产品数据功能的 PHP 项目, 情况是产品有大量数据,更新后,我将所有数据打包为JSON对象并存储到MySQL DB中。将所有内容打包成一个JSON对象并存储为一个MySQL行的原因是:在这个项目中,不同的产品具有不同的属性,所以我认为这将是一个临时存储数据的快速解决方案。

问题,当我从 MySQL DB 取回某些 JSON 对象时,我无法访问 JSON 对象,我使用了 JSON 解码,但它不起作用。

这是我创建 JSON 对象的方式

$product_INFO = (object)array(
    "ean_number" => "$Static_eanNumber",
    "product_name" => "$productName",
    "product_brand" => "$Brand",
    "product_weight_gr" => "$weight_GR",
    "product_vatrate" => "$vat__Rate",
    "product_supplier" => "$SUPPLIER",
    "product_googleShoppingCategory" => "$GOOGLE_ShoppingCategory",
    "LIGHTSPEED_INFO" => $LIGHTSPEED_product_info_array
);

并编码

  $Data_in_JSON = json_encode($product_INFO);

查询

  $write_JSON_object = "INSERT INTO editing ( eannumber, json) VALUES ('$Static_eanNumber','$Data_in_JSON')";

在mysql数据库表中,JSON的列是 名称:json 类型:LongText 排序规则:utf8mb4_bin

当我从数据库中获取时,我使用这个查询

   $find = "SELECT json FROM editing WHERE eannumber = 10000007 ";

   if (($found->num_rows) == 1) {

    $mysqlJSON = mysqli_fetch_array($found)[0];
    echo "<pre>";
    print_r($mysqlJSON);
    echo "</pre>";

}

这是我在 HTML 页面上看到的结果

  {"ean_number":"10000007",
  "product_name":"somevalue",
  "product_brand":"Leba",
  "product_weight_gr":"65000",
  "product_vatrate":"0.21",
  "product_supplier":"LebaBenelux",
  "product_googleShoppingCategory":"",
  "LIGHTSPEED_INFO":    [{"product_shop_id":68295980,"product_price":"2854.9533"..........

我尝试使用 JSON 解码 MySQL 获取结果,但它不起作用,所以我无法通过他们的键访问这个结果,例如“ean_number”,

   print_r(json_decode($mysqlJSON)->ean_number);

我不知道我在哪里犯了错误,我以错误的方式创建了一个 JSON 对象? MySQL或我如何获取数据有问题。

请帮忙谢谢!!!

【问题讨论】:

  • 你在哪里json_decode正在从数据库中获取数据?

标签: php mysql json


【解决方案1】:

您的代码对我有用,但您也可以将json_decode($mysqlJSON)-&gt;ean_number 更改为json_decode($mysqlJSON),然后访问您想要的属性:

$json = '{"ean_number":"10000007",
  "product_name":"somSomething is wrongue",
  "product_brand":"Leba",
  "product_weight_gr":"65000",
  "product_vatrate":"0.21",
  "product_supplier":"LebaBenelux",
         "product_googleShoppingCategory":""}';


$decoded = json_decode($json);

echo $decoded->ean_number;

【讨论】:

  • 请问你对包含HTML标签的文本进行编码和解码,它是同一个应用程序,但是我有一个问题,如果我编码和解码的文本包含HTML标签,我无法将它们解码回来.我尝试了一些从 PHP.net 找到的解决方案,但不起作用。如果您能帮助我,我将不胜感激,非常感谢您
  • @LevittShanHe 也许这会对你有所帮助? json-encode-not-working-with-a-html-string-as-value
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 2017-04-20
相关资源
最近更新 更多