如何将 json 数组插入 mysql 数据库

2022-08-31 00:52:41

嗨,我正在尝试将json数组插入我的MySQL数据库。我正在那里传递我的iPhone中的数据,我已经将数据转换为json格式,并且我正在使用未插入到我的服务器的URL将数据传递到我的服务器。

这是我的 json 数据。

[{“name”:“0”,“phone”:“dsf”,“city”:“sdfsdf”,“email”:“dsf”},{“name”:“13123123”,“phone”:“sdfsdfdsfsd”,“city”:“sdfsf”,“email”:“13123123”}]

这是我的Php代码。

<?php 

 $json = file_get_contents('php://input');
 $obj = json_decode($data,true);

 //Database Connection
require_once 'db.php';

 /* insert data into DB */
    foreach($obj as $item) {
       mysql_query("INSERT INTO `database name`.`table name` (name, phone, city, email) 
       VALUES ('".$item['name']."', '".$item['phone']."', '".$item['city']."', '".$item['email']."')");

     }
  //database connection close
    mysql_close($con);

   //}
   ?>

我的数据库连接代码。

   <?php

       //ENTER YOUR DATABASE CONNECTION INFO BELOW:
         $hostname="localhost";
         $database="dbname";
         $username="username";
         $password="password";

   //DO NOT EDIT BELOW THIS LINE
     $link = mysql_connect($hostname, $username, $password);
     mysql_select_db($database) or die('Could not select database');
 ?> 

请说出我在上面的代码中做错了什么,基本上我不是php开发人员,我是移动应用程序开发人员,所以我使用php作为服务器端脚本,请告诉我如何解决这个问题。


答案 1
 $json = file_get_contents('php://input');
 $obj = json_decode($json,true);

我认为你传递了错误的变量。您应该如上所述通过。$jsonjson_decode


答案 2

您缺少 JSON 源文件。创建一个 JSON 文件,然后将其分配给 var 数据:

<?php

require_once('dbconnect.php');

// reading json file
$json = file_get_contents('userdata.json');

//converting json object to php associative array
$data = json_decode($json, true);

// processing the array of objects
foreach ($data as $user) {
    $firstname = $user['firstname'];
    $lastname = $user['lastname'];
    $gender = $user['firstname'];
    $username = $user['username'];

    // preparing statement for insert query
    $st = mysqli_prepare($connection, 'INSERT INTO users(firstname, lastname, gender, username) VALUES (?, ?, ?, ?)');

    // bind variables to insert query params
    mysqli_stmt_bind_param($st, 'ssss', $firstname, $lastname, $gender, $username);

    // executing insert query
    mysqli_stmt_execute($st);
}

?>