上下文,我正在做这个具有更新产品数据功能的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或我如何获取数据有问题。
请帮助谢谢!!!
答案 0 :(得分:2)
您的代码对我有用,但是您也可以将json_decode($mysqlJSON)->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;