Как вставить полностью json объект в таблицу - PullRequest
0 голосов
/ 11 февраля 2020

Предположим, у меня есть таблица, подобная следующей:

 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"]; 

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Я думаю, что Barmar дал правильный ответ, если вы используете PDO.

Для полноты вы можете также сделать это чисто с помощью MySQL, используя json_extract() для чтения непосредственно из json строка, заданная в качестве параметра:

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

Демонстрация на 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;
id | name | family
-: | :--- | :-----
 1 | will | smith 
1 голос
/ 11 февраля 2020

Если вы используете PDO, вы можете предоставить ассоциативный массив для заполнения параметров запроса.

$query = $conn->prepare("INSERT INTO yourTable (name, family) VALUES (:name, :family)");
$data = json_decode($json_object, true);
$query->execute($data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...