在php中将多个JSON数据更新到MySQL中

问题描述 投票:1回答:2

我正在制作一个用于更新多个记录的php。我尝试打印已发布的JSON数据但失败了,它说我得到了一个解析错误。怎么解决?

对不起我是php新手,我觉得我写的代码有很多问题。

updateAccountbook.php

require("../db/MySQLDAO.php");

$config = parse_ini_file('../conn.ini');

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

echo $obj;
print_r($obj);

$dbhost = trim($config["dbhost"]);
$dbuser = trim($config["dbuser"]);
$dbpass = trim($config["dbpass"]);
$dbname = trim($config["dbname"]);

$dao = new MySQLDAO($dbhost, $dbuser, $dbpass, $dbname);

$dao->openConnection();

$foreach($obj as $item) {
   mysql_query("INSERT INTO account_book (book_cid, book_name, book_type, book_category, book_user) 
   VALUES ('".$item['book_cid']."','".$item['book_name']."', '".$item['book_type']."', '".$item['book_category']."', '".$item['book_user']."')");

 }

$dao->closeConnection();

echo json_encode($returnValue);

mySQLDAO.php

class MySQLDAO{

var $dbhost = null;
var $dbuser = null;
var $dbpass = null;
var $conn = null;
var $dbname = null;
var $result = null;

function __construct($dbhost, $dbuser, $dbpassword, $dbname) {
    $this->dbhost = $dbhost;
    $this->dbuser = $dbuser;
    $this->dbpass = $dbpassword;
    $this->dbname = $dbname;
} 


public function openConnection() { 
    $this->conn = new mysqli($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname);
    if (mysqli_connect_errno())
        throw new Exception("Could not establish connection with database");
    $this->conn->set_charset("utf8");
}

public function closeConnection() {
    if ($this->conn != null)
        $this->conn->close();
}

}

JSON格式

{
    "book_cid": "1234",
    "book_name" : "Test",
    "book_type": "Test",
    "book_category": "Test",
    "book_user": "Test"
}

错误信息

enter image description here

php mysql json
2个回答
0
投票

更换

$foreach($obj as $item)

foreach($obj as $item)

0
投票

这段代码有问题:

$foreach($obj as $item){
mysql_query("INSERT INTO account_book (book_cid, book_name, book_type, book_category, book_user) VALUES ('".$item['book_cid']."','".$item['book_name']."', '".$item['book_type']."', '".$item['book_category']."', '".$item['book_user']."')");
}

你不需要一个foreach循环来遍历一个对象。在这种情况下,删除foreach而不是$item$obj

mysql_query("INSERT INTO account_book (book_cid, book_name, book_type, book_category, book_user) VALUES ('".$obj['book_cid']."','".$obj['book_name']."', '".$obj['book_type']."', '".$obj['book_category']."', '".$obj['book_user']."')");

如果$obj有很多行对象:

for($i=0; $i < count($obj); $i++)
{
    mysql_query("INSERT INTO account_book (book_cid, book_name, book_type, book_category, book_user) VALUES ('".$obj[$i]['book_cid']."','".$obj[$i]['book_name']."', '".$obj[$i]['book_type']."', '".$obj[$i]['book_category']."', '".$obj[$i]['book_user']."')");
}
© www.soinside.com 2019 - 2024. All rights reserved.