当第二个表的id依赖于第一个表时,使用php一次插入两个表mysql

时间:2018-02-15 11:54:28

标签: php mysql

我想一次插入两个表。我可以通过php更新。

例如: - 我将添加一行id为1的第一个表,我将添加3行第二个表。我希望所有3行的id为1。但是我没有得到如何做到这一点?

表示第一个表更新时,最后一行ID应该更新到第二个表到当时更新的所有行。

我的PHP代码是,

$sql="INSERT INTO run_test2(url,gh_url,platform,machine_size,browser,image_id,security_id,instance,timer,protocol,concurrency,rampup,iteration,time_out,cache) values('".$_POST["url"]."','".$_POST['gh_url']."','".$_POST['platform']."','".$_POST['inst_type']."','".$_POST['browsers']."','".$_POST['imageid']."','".$_POST['sgid']."','".$_POST['instance']."','".$_POST['timer']."','".$_POST['protocol']."','".$_POST['concurrency']."','".$_POST['rampup']."','".$_POST['iteration']."','".$_POST['time_out']."','".$_POST['radio']."');";
for($a=0;$a<3;$a++){
$sql .="INSERT INTO file_email2(filename,email) VALUES('url.jmx','vidya@gmail.com');";
}
//mysqli_query($conn,$sql);
if (mysqli_multi_query($GLOBALS['db'], $sql)) {
      include_once "header.php";
    echo "Your Test Saved ,Successfully!";
} 
else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($GLOBALS['db']);
}

创建我在下面使用查询的表

create table run_test2(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));

alter table run_test2 modify column id int(11) auto_increment;

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


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

它输出如下:

在run_test(第一张表)中,

e

在第二张表中:

n

但是在第二个表格中,我希望输出如下:

t

1 个答案:

答案 0 :(得分:0)

我这样做了它完全正常工作。工作正常。

(1)。我已经删除了触发器     (DROP TRIGGER triggered_from_runtest2;) 2()。在php我用过这样的,

$sql="INSERT INTO run_test2(url,gh_url,platform,machine_size,browser,image_id,security_id,instance,timer,protocol,concurrency,rampup,iteration,time_out,cache) values('".$_POST["url"]."','".$_POST['gh_url']."','".$_POST['platform']."','".$_POST['inst_type']."','".$_POST['browsers']."','".$_POST['imageid']."','".$_POST['sgid']."','".$_POST['instance']."','".$_POST['timer']."','".$_POST['protocol']."','".$_POST['concurrency']."','".$_POST['rampup']."','".$_POST['iteration']."','".$_POST['time_out']."','".$_POST['radio']."');";

$concur_sql = "SELECT  max(id) from run_test2;";
$result_concur_sql = mysqli_query($GLOBALS['db'],$concur_sql);
$row=mysqli_fetch_array($result_concur_sql);
        //maximum concurrency
$max_con=$row['max(id)'];
$max_con=$max_con+1;
for($a=0;$a<3;$a++){
$sql .="INSERT INTO file_email2(id,filename,email) VALUES('".$max_con."','url.jmx','vidya@gmail.com');";
}
//mysqli_query($conn,$sql);
if (mysqli_multi_query($GLOBALS['db'], $sql)) {
      include_once "header.php";
    echo "Your Test Saved ,Successfully!";
} 
else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($GLOBALS['db']);
}