使用PHP将JSON信息发送到数据库?

用户名

我正在尝试使用PHP将数据从JSON文件发送到MySQL数据库。

我有99%的工作正常,但遇到了一个小障碍,我不知道。这是我的代码:

$con = mysqli_connect($host, $username, $password, $dbname) or die('Error in Connecting: ' . mysqli_error($con));

$st = mysqli_prepare($con, 'INSERT INTO url_feed(url, results, current_date, networks, identifier) VALUES (?, ?, ?, ?, ?)');

mysqli_stmt_bind_param($st, 'sssss', $url, $results, $current_date, $networks, $identifier);

$filename = 'https://www.example.com/random.json';
$json = file_get_contents($filename);   

$data = json_decode($json, true);

foreach ($data as $row) {
$url = $row['url'];
$identifier = $row['identifier'];
$current_date = $row['current_date'];
$results = $row['results'];
$networks = $row['networks'];

    mysqli_stmt_execute($st);
}

mysqli_close($con);

这是其中包含3个对象的JSON的副本:

[
   {
      "url":"http://example1.com",
      "identifier":495755330,
      "current_date":"2015-12-30 17:05:45",
      "results":3,
      "networks":{
         "FaceBook":{"detected":true,"result":"no-result"},
         "Twitter Inc":{"detected":false,"result":"no-result"},
         "Pinterest.com":{"detected":true,"result":"no-result"},
         "Other Sites":{"detected":true,"result":"some-result"}
      }
   },
   {
      "url":"http://example2.com",
      "identifier":495755331,
      "current_date":"2015-12-30 17:05:46",
      "results":0,
      "networks":{
         "FaceBook":{"detected":false,"result":"what-result"},
         "Twitter Inc":{"detected":false,"result":"some-result"},
         "Pinterest.com":{"detected":false,"result":"some-result"},
         "Other Sites":{"detected":false,"result":"what-result"}
      }
   },
   {
      "url":"http://example3.com",
      "identifier":495755332,
      "current_date":"2015-12-30 17:05:47",
      "results":1,
      "networks":{
         "FaceBook":{"detected":false,"result":"some-result"},
         "Twitter Inc":{"detected":true,"result":"some-result"},
         "Pinterest.com":{"detected":false,"result":"some-result"},
         "Other Sites":{"detected":false,"result":"some-result"}
      }
   }
]

现在,如果我运行脚本,它将像下面这样将其插入数据库:

id | url                 | results   | current_date        | networks | identifier  | status
1  | http://example1.com | 3         | 2015-12-30 17:05:45 | Array    | 495755330   | queued
2  | http://example2.com | 0         | 2015-12-30 17:05:46 | Array    | 495755331   | queued
3  | http://example3.com | 1         | 2015-12-30 17:05:47 | Array    | 495755332   | queued

但这是我希望输入的方式:

id | url                 | results   | current_date        | networks                           | identifier | status
1  | http://example1.com | 3         | 2015-12-30 17:05:45 | FaceBook,Pinterest.com,Other Sites | 495755330  | queued
2  | http://example3.com | 1         | 2015-12-30 17:05:47 | Twitter Inc                        | 495755332  | queued

这是我不知道的部分:

它试图以Array的形式输入,这显然不起作用-只是在该networks下插入了文本“ Array” 如果detected设置为,我只想插入数据库true如果不是,我不希望该社交网络在数据库中列出。

如果没有true为某个对象设置任何社交网络,那么我根本就不想输入该对象。这就是为什么您在我上面的示例中看到某些网络缺失的原因,以及为什么第二行不存在的原因。

爱德华多·埃斯科巴尔

而不是$networks = $row['networks'];使用此:

$a = json_decode($row['networks'], true);
$b = array_filter($a, function($el) {
  if ($el['detected'] == true) {
    return true;
  }
});
$c = implode(', ', array_keys($b));
$networks = $c;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将下拉列表的信息发送到数据库

将json数据发送到mysql数据库?

如何使用ajax javascript PHP将大型json数据(250kb)发送到mysql数据库

如何使用Jquery和Ajax将Json数据发送到数据库中?

AJAX到PHP不会使用NODEJS将数据发送到数据库

使用Ajax将图像发送到数据库(php),而无需重新加载

如何使用PHP将时间发送到MySql数据库?

如何使用php将邮件从数据库发送到多个电子邮件列表

如何使用 PHP 将 HTML 输入字段发送到我的 MySQLi 数据库?

来自论坛的信息未发送到数据库

用户信息未发送到数据库

如何将Firebase数据库中的Google登录信息发送到导航抽屉?

如何使用JSON将HTML数据发送到PHP?

将XML数据发送到MySQL数据库

将textarea数据发送到数据库的麻烦

将数据从表单发送到数据库

使用EtherCard.h库将arduino数据发送到我的数据库

无法将数据从用户表单发送到 PHP 中的数据库

Php 将表单数据发送到 Wordpress 中的特定 Mysql 数据库中

无法将数据发送到mysql数据库。这不是我的PHP代码

使用javaservlet将数据从数据库发送到jsp

使用NodeMCU ESP8266将Arduino数据发送到mySQL数据库

使用AJAX将数据发送到数据库失败

在使用jQuery将数据发送到数据库时,如何使按钮处于活动状态?

如何使用用户帐户从 Firebase 将数据发送到数据库?

使用Jquery / ajax将数据发送到数据库

使用SqlDataSource将数据从FormView发送到我的数据库

如何使用vue.js(ajax)将数据发送到数据库

无法使用Volley将数据发送到数据库