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

问题描述 投票:0回答:2

我有两个名为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表:

file_email表是:

php mysql
2个回答
0
投票

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

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

2)然后像下面给出的那样更改你的触发器,这会将新条目的id插入你的file_email表中。

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并运行您的文件。

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


0
投票

您不需要自动增量触发器,如果​​在添加时正确设置了db模式,它将为您自动调整。

我建议检查你的数据库。你正在努力做到这一点。

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

© www.soinside.com 2019 - 2024. All rights reserved.