使用php在sql中的两个表中添加相同的'id'

Posted

技术标签:

【中文标题】使用php在sql中的两个表中添加相同的\'id\'【英文标题】:adding same 'id' in two tables in sql using php使用php在sql中的两个表中添加相同的'id' 【发布时间】:2020-01-16 08:44:42 【问题描述】:

我试图在 2 个 sql 表中给出相同的 id,我的代码如下:

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

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

此代码从我的 HTML 输入框中获取值并将值正确添加到表中,现在我需要一个与上表具有相同 ID 的表(以便我可以连接两个表),我在第一次查询后尝试了类似下面的代码,但由于我无法获得任何可以给我正确 id 的条件,没有任何效果,示例如下

$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)");

谁能告诉我有没有办法使用 php 为 sql 中的两个表提供相同的 id。

【问题讨论】:

你可以使用empid。在employeesdate 表中插入empid 您应该在关系数据库上投入一些时间。我认为你错过了那里的要点。您不需要相同的 id,您只需要一个表中的一个字段来引用另一个表。 @BlackNetworkBit 我知道,但我表中的数据会不断添加,所以我需要在一列中的随机数来相互引用,但如果我生成随机数,它不是 100%将返回唯一值,所以我尝试使用唯一的相同 id @BlackNetworkBit 如何在没有共同值的情况下连接两个表?? @Anshu Sharma 与加入无关,他想插入它们。所以他可以做一个参考。 【参考方案1】:

正如评论中提到的和随后请求的那样 - trigger 似乎是解决问题的好选择,因为您只需要关心初始插入 - 然后重复的 ID(或其他字段)由自动处理触发器。

给定两个基本表来复制问题中的这些

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 |
+----+---------------------+

【讨论】:

【参考方案2】:

使用$last_id = $con->insert_id; 获取最后插入的 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();

【讨论】:

以上是关于使用php在sql中的两个表中添加相同的'id'的主要内容,如果未能解决你的问题,请参考以下文章

PHP/SQL - 如果 foreach() 中的 ID 相同,则将值相加

SQL 查找两表中不同的数据

通过PHP从SQL中的表中获取ID

如何使用会话ID从php mysql中的两个或多个表中获取值

sql语句如何查询一个表中某两个字段的相同数据?

将第二个表中的第二个(条件)结果添加到 SQL 查询