Возможный способ вставки lastInsertId из одной таблицы в другую одновременно или одновременно - PullRequest
0 голосов
/ 01 марта 2020

Сценарий таков: у меня есть две таблицы, мы можем назвать их table_a и table_b. у одного 4 столбца, а у другого 3, вот как они выглядят

table_a                        table_b
+------+------+-----+----+       +-----+-----+-----+
| a_id | name | age |sex |       |b_id |a_id |type |
+------+------+-----+----+       +-----+-----+-----+

У меня есть запрос, который вставляет данные в две таблицы одновременно

$query = "INSERT INTO table_a SET name=:name, age=:age, sex=:sex; INSERT INTO table_b SET   type=:type";
$stmt = $this->conn->prepare($query);
$this->name = $this->name;
$this->name = $this->age;
$this->name = $this->sex;
$this->name = $this->type;
$stmt->bindParam(':name', $this->name);
$stmt->bindParam(':age', $this->age);
$stmt->bindParam(':sex', $this->sex);
$stmt->bindParam(':type', $this->type);
if($stmt->execute()){
   return $this->conn->lastInsertId();
 }else{ 
   return -1;}

a_id для table_a - это автоинкремент, аналогичный b_id в table_b, имя, возраст, пол, тип были вставлены пользователем с помощью

$_POST

Теперь, мой запрос, есть ли способ, которым я могу автоматически поставить значение a_id из table_a в a_id в table_b? LastInsertId работает правильно, хотя я не уверен, как я могу поместить его в другую таблицу. Я также думаю о другом решении, которое назначает значение a_id, используя это

a_id=:LAST_INSERT_ID() 

Но я не уверен, как это сделать или возможно ли это.

1 Ответ

0 голосов
/ 01 марта 2020

Попробуйте это:

INSERT INTO table_a SET name=:name, age=:age, sex=:sex; INSERT INTO table_b SET a_id=LAST_INSERT_ID(), type=:type;
...