如何在php中插入mysql的自动递增字段id并将一个表的id更新为另一个?

时间:2018-02-14 14:17:43

标签: php mysql

我有两个名为run_test和file_email的表。我想使用php插入run_test表。它工作正常。当我更新run_test时,id字段也应该在file_email表中更新。

我没有得到如何在php中使用insert语句。

在创建表格时,我使用了这些查询。

create table run_test(id int not null auto_increment,url varchar(255),gh_url varchar(255),platform varchar(255),machine_size varchar(255),browser varchar(255),image_id varchar(255), security_id varchar(255),instance int,timer varchar(255),protocol varchar(255),concurrency int,rampup int,iteration int ,time_out int, cache varchar(255), primary key(id));


create table file_email(id int primary key  ,filename varchar(255),email varchar(255), foreign key(id) references run_test(id));

我已经创建了一个触发器,

DELIMITER $$
CREATE TRIGGER triggered_from_runtest 
    BEFORE insert ON run_test
    FOR EACH ROW 
BEGIN
    INSERT INTO  file_email
    SET file_email.id = new.id;
END$$
DELIMITER ;

在php中,要使用null插入run_test的id字段或不输入任何内容,它会在run_test字段中自动递增,但它不会在file_email表中更新自动增量值虽然我创造了一个触发器。该领域的成绩为0。

在php中我使用过这样的,

insert into run_test(url,gh_ur,....)values('www.google.com','www.yajana.com',..............);

这也是我尝试过的,

insert into run_test(id,url,gh_ur,....)values(null,'www.google.com','www.yajana.com',..............);

run_test中,它会增加但不在file_email

我该怎么做?

run_test table:

enter image description here

file_email表是:

enter image description here

2 个答案:

答案 0 :(得分:0)

你不需要auto_increment的触发器,如果​​db schemea设置正确,添加它将为你自动int。

我建议检查你的数据库。你正在做这件事。

https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html

答案 1 :(得分:0)

嗨,你需要纠正三件事才能得到你期望的东西。

1)通过指定整数范围(alter table run_test modify column id int(11) auto_increment来更改run_test表的id列 )。

2)然后更改您的触发器,如下所示,这将在您的file_email表中插入新条目的ID。

DELIMITER $$
CREATE TRIGGER triggered_from_runtest 
    AFTER insert ON run_test
    FOR EACH ROW
BEGIN
set @lastId=(select id from run_test order by id desc limit 1);
    INSERT INTO  file_email(id) values(@lastId);
END$$
DELIMITER ;

3)删除run_test表中的插入查询(php查询)中给出的id并运行你的文件。

你会得到你的输出!!!!!