добавление одного и того же идентификатора в две таблицы в sql с использованием php - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь дать тот же идентификатор в таблице 2 sql, мой код выглядит следующим образом:

$field1=$_POST['field1'];
$field2=$_POST['field2'];
$field3=$_POST['field3'];

 $query=mysqli_query($con,"insert into employees(name,position,salary) value('$field1','$field2','$field3')");

Этот код принимает значения из моего поля ввода HTML и добавьте значения в таблицу правильно, теперь мне нужна еще одна таблица, у которой будет тот же идентификатор, что и у таблицы выше (чтобы я мог соединить обе таблицы), я попробовал что-то похожее на код ниже после первого запроса, но так как я не удалось получить условие, которое даст мне правильный идентификатор, ничего не работает, пример ниже

$query=mysqli_query($con,"insert into employees(name,position,salary,empid) value('$field1','$field2','$field3')");

$query=mysqli_query($con,"insert into date(id) value(select id from employees where)");

Может кто-нибудь сказать, есть ли способ дать одинаковый идентификатор обеим таблицам в sql, используя php.

Ответы [ 2 ]

2 голосов
/ 16 января 2020

Как упоминалось в комментарии и впоследствии запрашивалось - trigger может показаться хорошим вариантом для решения проблемы, поскольку вам нужно только позаботиться о первоначальной вставке - дублированный идентификатор (или другие поля) затем обрабатываются автоматически триггер.

Имеются две базовые c таблицы для репликации этого вопроса

mysql> describe employees;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name     | varchar(50)      | NO   |     | 0       |                |
| position | varchar(50)      | NO   |     | 0       |                |
| salary   | decimal(10,2)    | NO   |     | 0.00    |                |
+----------+------------------+------+-----+---------+----------------+



mysql> describe date;
+-----------+------------------+------+-----+-------------------+-------+
| Field     | Type             | Null | Key | Default           | Extra |
+-----------+------------------+------+-----+-------------------+-------+
| id        | int(10) unsigned | NO   | PRI | NULL              |       |
| timestamp | timestamp        | NO   |     | CURRENT_TIMESTAMP |       |
+-----------+------------------+------+-----+-------------------+-------+

Простой trigger, который привязан к таблице employees и вставляется в date таблица при добавлении новой строки.

CREATE TRIGGER `tr_employee_inserts` AFTER INSERT ON `employees` FOR EACH ROW BEGIN
    insert into `date` set `id`=new.id;
END

Для проверки

insert into employees (`name`,`position`,`salary` ) values ( 'Peter', 'Porcupine Pickler', 75000 );
insert into employees (`name`,`position`,`salary` ) values ( 'Roger', 'Rabitt Rustler', 25000 );
insert into employees (`name`,`position`,`salary` ) values ( 'Michael', 'Mouse Mauler', 15000 );

select * from `employees`;
select * from `date`;

Результат

mysql> select * from employees;
+----+---------+-------------------+----------+
| id | name    | position          | salary   |
+----+---------+-------------------+----------+
|  1 | Peter   | Porcupine Pickler | 75000.00 |
|  2 | Roger   | Rabitt Rustler    | 25000.00 |
|  3 | Michael | Mouse Mauler      | 15000.00 |
+----+---------+-------------------+----------+


mysql> select * from date;
+----+---------------------+
| id | timestamp           |
+----+---------------------+
|  1 | 2020-01-16 10:11:15 |
|  2 | 2020-01-16 10:11:15 |
|  3 | 2020-01-16 10:11:15 |
+----+---------------------+
1 голос
/ 16 января 2020

Используйте $last_id = $con->insert_id; для получения последнего введенного идентификатора.

Пожалуйста, попробуйте следующий код. Это работает для вас.

 $field1 = 'name';
    $field2 = 'position';
    $field3 = '10000';
    $field4 = 'SOF01';

// insert employees data
    $stmt = $con->prepare("INSERT INTO employees (name,position,salary,empid) VALUES (?, ?, ?, ?)");
    $stmt->bind_param("ssss", $field1, $field2, $field3, $field4);
    $stmt->execute();

// get last insert id
    $last_id = $con->insert_id;

// insert last id in date table
    $stmt = $con->prepare("INSERT INTO date (id) VALUES (?)");
    $stmt->bind_param("s", $last_id);
    $stmt->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...