【问题标题】:How to insert entirely json object to table如何将完全 json 对象插入到表中
【发布时间】:2020-05-26 06:38:49
【问题描述】:

假设我有一个如下表:

 id| name | family
---+------+---------
 1 | iman | marashi
 2 | mike | ...
 3 | john | ...
 4 |      | 

我也有一个 Json 对象来插入到表中,如下所示:

{"name ":"will","family":"smith"}

鉴于表的字段和 Json 对象的键相同,如何将 Json 对象一起插入到表中?

无需解析 Json 对象。

我不想用这个方法:

$name = $data["name"]; 
$family = $data["family"]; 

【问题讨论】:

标签: php mysql sql json sql-insert


【解决方案1】:

如果您使用的是 PDO,您可以提供一个关联数组来填充查询的参数。

$query = $conn->prepare("INSERT INTO yourTable (name, family) VALUES (:name, :family)");
$data = json_decode($json_object, true);
$query->execute($data);

【讨论】:

    【解决方案2】:

    如果您正在运行 PDO,我认为 Barmar 提供了正确的答案。

    为了完整起见,您也可以纯粹使用 MySQL 来执行此操作,使用 json_extract() 直接从作为参数给出的 json 字符串中读取:

    insert into mytable (name, family) values(
        json_unquote(json_extract(:js, '$.name')),
        json_unquote(json_extract(:js, '$.family'))
    );
    

    Demo on DB Fiddle

    create table mytable (
        id int auto_increment primary key, 
        name varchar(50), 
        family varchar(50)
    ):
    
    insert into mytable (name, family) values(
        json_unquote(json_extract('{"name":"will","family":"smith"}', '$.name')),
        json_unquote(json_extract('{"name":"will","family":"smith"}', '$.family'))
    );
    
    select * from mytable;
    
    编号 |姓名 |家庭 -: | :--- | :----- 1 |将|史密斯

    【讨论】:

    • 不需要在这里提供答案,我认为除了PDO 之外,这个也涵盖了我。考虑到正确的 MySQL 服务器版本,我认为这种方式更好。
    猜你喜欢
    • 2018-04-20
    • 1970-01-01
    • 2012-08-22
    • 2014-05-24
    • 2020-06-13
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多