2017-07-02 40 views
0

我有一個Json文件,其數據顯示在下面。即時嘗試插入到另一個文件的PHP代碼下面的分貝。我不斷收到錯誤:爲提供的foreach 無效的說法,我不明白爲什麼json to php爲foreach提供的無效參數

[{ 
    "DATE": "02-07-2017", 
    "TIME": "08:20:48 AM", 
    "ACCOUNT ID": "1000", 
    "POSITION": "", 
    "FIRST NAME": "", 
    "LAST NAME": "", 
    "ACCOUNT STATUS": "Active",`` 
    "REAL URL": "" 
},{ 
    "DATE": "02-07-2017", 
    "TIME": "08:20:49 AM", 
    "ACCOUNT ID": "1000", 
    "POSITION": "", 
    "FIRST NAME": "", 
    "LAST NAME": "", 
    "ACCOUNT STATUS": "Active", 
    "REAL URL": "" 
},{ 
    "DATE": "02-07-2017", 
    "TIME": "08:20:49 AM", 
    "ACCOUNT ID": "1000", 
    "POSITION": "Ceo", 
    "FIRST NAME": "", 
    "LAST NAME": "", 
    "ACCOUNT STATUS": "Active", 
    "REAL URL": "" 
}] 

$JSON_DATA = file_get_contents('Track.js'); 
$CLEAN_DATA = json_decode($JSON_DATA, true); 
$stmt = $db->prepare("INSERT INTO `Track Employee` VALUES (?,?,?,?,?,?,?,?)"); 
foreach (($CLEAN_DATA) as $row) { 
    $stmt->bindParam(1, $row['DATE']); 
    $stmt->bindParam(2, $row['TIME']); 
    $stmt->bindParam(3, $row['ACCOUNT ID']); 
    $stmt->bindParam(4, $row['POSITION']); 
    $stmt->bindParam(5, $row['FIRST NAME']); 
    $stmt->bindParam(6, $row['LAST NAME']); 
    $stmt->bindParam(7, $row['ACCOUNT STATUS']); 
    $stmt->bindParam(8, $row['REAL URL']); 
} 
+0

帶有.js擴展名的json文件?爲什麼?也從這裏驗證它https://jsonlint.com/,刪除**''** chanracter並添加開始[和結束]括號 –

+2

這是無效的JSON - 它需要包裹在'['和'] '。 – localheinz

+0

您的'json'數據無效 –

回答

2

你有2個問題,這個JSON:

  1. JSON數組應該用[]包裹。

  2. 您在第8行有不必要的反引號。

    「帳戶狀態」:「活動」,``

json_decode功能得到了無效的JSON字符串,它返回FALSE,並且由於它不是一個數組 - 你得到的foreach警告。

相關問題