【问题标题】:ForEach Read Json Get Invalid argument supplied for foreach()ForEach 读取 Json 获取为 foreach() 提供的无效参数
【发布时间】:2016-03-15 14:10:19
【问题描述】:

我正在尝试读取 json_decode 以插入到一个 MySQL 表中,但我收到此错误:警告:foreach() 提供的参数无效,我不明白为什么,这个是我的代码:

$connection = new PDO('mysql:host=localhost;dbname=mydb', 'myuser', 'mypassword');

$getJsonData = file_get_contents('myurlwiththejsondata');

$data = json_decode($getJsonData);


foreach ($data as $value) {

    $sql = $connection->prepare('INSERT INTO `mytable` (`id`, `ssn`,  `idwork`) VALUES 
        (NULL, :ssn, :idwork) ');

  $sql->bindParam(':ssn', $value->ssn);
  $sql->bindParam(':idwork', $value->idwork);

  $getResult = $sql->execute();
}

$connection = null;

但我不断收到此警告消息:警告:为 foreach() 提供的参数无效,我的数据如下所示:

[
    {"id":"1","ssn":"1000","idwork":"123"}, 
    {"id":"1","ssn":"2000","idwork":"1234"}
] 

老实说,我不明白为什么我的代码会失败。

【问题讨论】:

  • 如果你在 foreach 声明之前 var_dump($data) 会显示什么?
  • 如果 json 看起来与发布的完全一样,则无法重新创建。请添加var_dump() 输出。
  • string(3521) "[ {"id":"1","ssn":"1000","idwork":"123"}, {"id":"1","ssn":"2000","idwork":"1234"}...我的var_Dump()

标签: php mysql json foreach


【解决方案1】:

试试这个:

$getJsonData = file_get_contents('myurlwiththejsondata');
// Add this line
$getJsonData = iconv('UTF-8', 'UTF-8//IGNORE', utf8_encode($getJsonData));
$data = json_decode($getJsonData);

如果上面的代码对你不起作用,请查看我的回答here

【讨论】:

    猜你喜欢
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2011-02-07
    相关资源
    最近更新 更多