【发布时间】:2018-12-31 03:12:23
【问题描述】:
所以我一直在做研究,似乎没有任何方法可以正确解析我的文件。我已经尝试了这两个代码,我的数据被插入到 sql 中,但是它被插入了 3 次,第一次插入很好,而其他 2 次是空白的。这是我的 JSON 文件和代码:
JSON:
[
{
"Comments": {
"Manufacturer": "--E",
"Model": "----- ----- ----",
"BIOSFamily": "---",
"BIOSDate": --/--/---8",
"SerialNumber": "---------"
}
},
{
"#ComputerSystem.v1-----------ystem": {
"/redfish/v1/Systems/1/": {
"AssetTag": " ",
"Bios": {
"@odata.id": "/redfish/v1/systems/1/bios/"
},
"BiosVersion": "U----------------)",
"Boot": {
"BootSourceOverrideMode": "-----y",
"BootSourceOverrideTarget": "None",
"BootSourceOverrideEnabled": "Disabled",
"BootSo-----------arget@Redfish.AllowableValues": [
"None",
"Cd",
"Hdd",
"Usb",
"Utilities",
"Diags",
"BiosSetup",
"Pxe",
"UefiShell"
]
代码:
<?php
$connect = mysqli_connect("reserve1",
"root", "","server_31");
$filename = "-----.json";
$data = file_get_contents($filename);
$array = json_decode($data, true);
foreach($array as $row)
{
$sql = "INSERT INTO servers (Model,
Manufacturer, BIOSFamily,
BIOSDate,
SerialNumber) VALUES
('".$row["Comments"]["Model"]."' ,
'".$row["Comments"]
["Manufacturer"]."',
'".$row["Comments"]
["BIOSFamily"]."','".$row["Comments"]
["BIOSDate"]."','".$row["Comments"]
["SerialNumber"]."')";
mysqli_query($connect, $sql);
}
echo "Data in";
?>
错误:“注意:未定义的索引:评论”
我尝试过的其他 forloops 是:
foreach($data as $Comments)
{
$sql =" INSERT INTO
'servers'('Manufacturer','Model',
'BIOSFamily','BIOSDate',
'SerialNumber'), VALUES('{$Comments-
>Manufacturer}', '{$Comments-
>Model}',
'{$Comments->BiosFamily}',
'{$Comments->BiosDate}',
'{$Comments-
>SerialNumber}')";
}
错误:“注意:试图获取非对象的属性”
重申:第一种方法确实将我的信息放到 sql 中,但这样做了 3 次,最后 2 个条目为空白。第二种方法不会向我的表中插入任何内容。
编辑:
所以我尝试了 vardump,使用文件本身,我得到的只是 NULL,复制并粘贴内容并在我得到的脚本中将其标记为 $json='content'..
C:\Users\Administrator\Desktop\Reserve1\newtry\NEWJSONP.php:16:
array (size=1)
0 =>
object(stdClass)[1]
public 'Comments' =>
object(stdClass)[2]
public 'Manufacturer' => string 'HPE' (length=3)
public 'Model' => string '-------------' (length=20)
public 'BIOSFamily' => string '---' (length=3)
public 'BIOSDate' => string '--/--/----' (length=10)
public 'SerialNumber' => string '-------' (length=10)
C:\Users\Administrator\Desktop\Reserve1\newtry\NEWJSONP.php:17:
array (size=1)
0 =>
array (size=1)
'Comments' =>
array (size=5)
'Manufacturer' => string '---' (length=3)
'Model' => string '------ ----------' (length=20)
'BIOSFamily' => string '---' (length=3)
'BIOSDate' => string '--/--/----' (length=10)
'SerialNumber' => string '-------' (length=10)
【问题讨论】:
-
你好,你试过
var_dump($array)吗?编辑:也许这是一个错误,但在你的 json 中它错过了一个结束] -
这不是有效的 JSON,但如果是:
foreach($array[0] as $row) -
对不起,我错过了“]”。我现在就试试你说的。
-
最后两行是空白的三次?您将不得不向我们展示 json 的内容,因为您所展示的以及您所描述的是错误......不要对齐。
-
我已经添加了我试图解析的整个 JSON 文件。
标签: php sql json parsing insert