在php中,插入到三个表中,一次查询一个表

在php中,插入到三个表中,一次查询一个表,php,mysql,sql,Php,Mysql,Sql,我正在尝试使用PHP一次插入、更新三个表,并使用一个表进行查询,因此我有一个表“commandetb”,它的外键为tables=fourniseurtb,marchetb,marchetb表的外键为datetb,因此我有一个表单,其中包含nomF、adrF的输入,fournisseurtb的telF还包括来自marchetb的objet_marche和来自datetb的最后日期限制和heure_限制。谁能帮我解决这个问题我很感激。以下是脚本: $sql="INSERT INTO `co

我正在尝试使用PHP一次插入、更新三个表,并使用一个表进行查询,因此我有一个表“commandetb”,它的外键为tables=fourniseurtb,marchetb,marchetb表的外键为datetb,因此我有一个表单,其中包含nomF、adrF的输入,fournisseurtb的telF还包括来自marchetb的objet_marche和来自datetb的最后日期限制和heure_限制。谁能帮我解决这个问题我很感激。以下是脚本:

$sql="INSERT INTO `commandetb`(`date_cmd`,ID_marche,ID_f) VALUES('hhhh',,);
          INSERT INTO `fournisseurtb`(`nomF`,`adrF`,`telF`) VALUES(:znomF,:zadrF,:ztelF);
          INSERT INTO `marchetb`(`objet_marche`,ID_date) VALUES(:zobjet,LAST_INSERT_ID()) ";
    $stmt=$connectDB->prepare($sql);

    $stmt->bindValue(':znomF',$nomSoc);
    $stmt->bindValue(':zadrF',$adrSoc);
    $stmt->bindValue(':ztelF',$telSoc);
    $stmt->bindValue(':zobjet',$objet);
    
    $exec=$stmt->execute();

    if ($exec) {
        $sql2="INSERT INTO `datetb` (`date_limite`,`heure_limite`) VALUES(:zdateLimite,:zheureLimite)";
        $stmt2=$connectDB->prepare($sql2);
        $stmt2->bindValue(':zdateLimite',$dateLimite);
        $stmt2->bindValue(':zheureLimite',$heureLimite);
        $exec2=$stmt2->execute();
        if ($exec2) {
            $_SESSION['succesMessage']='La lettre est ajouté avec succes';
        }
    }
    else {
            $_SESSION['errorMessage']='il ya un problem d\'ajout, verifiez svp!';
        }

我使用存储过程,但问题没有解决: Mysql代码:

 CREATE PROCEDURE add_lettre(nomf varchar(50), adrf varchar(255), telf varchar(25), objetMarche varchar(500), dLimite varchar(25), hLimite varchar(25))
$sql="CALL add_lettre(':znomF',':zadrF',':ztelF','zobjet',':zdateLimite',':zheureLimite')";
    $stmt=$connectDB->prepare($sql);

    $stmt->bindValue(':znomF',$nomSoc);
    $stmt->bindValue(':zadrF',$adrSoc);
    $stmt->bindValue(':ztelF',$telSoc);
    $stmt->bindValue(':zobjet',$objet);
    $stmt2->bindValue(':zdateLimite',$dateLimite);
    $stmt2->bindValue(':zheureLimite',$heureLimite);
    
    $exec=$stmt->execute();

    if ($exec) {
        
        $_SESSION['succesMessage']='La lettre est ajouté avec succes';
        
    }
    else {
            $_SESSION['errorMessage']='il ya un problem d\'ajout, verifiez svp!';
        }
开始 插入四个NISSEURTB(nomF、adrF、telF)值(nomF、adrF、telF); 插入marchetb(objet_marche,ID_date)值(objetMarche,LAST_INSERT_ID()); 在datetb(date_limite,heure_limite)中插入值(dLimite,hLimite); 结束

PHP代码:

 CREATE PROCEDURE add_lettre(nomf varchar(50), adrf varchar(255), telf varchar(25), objetMarche varchar(500), dLimite varchar(25), hLimite varchar(25))
$sql="CALL add_lettre(':znomF',':zadrF',':ztelF','zobjet',':zdateLimite',':zheureLimite')";
    $stmt=$connectDB->prepare($sql);

    $stmt->bindValue(':znomF',$nomSoc);
    $stmt->bindValue(':zadrF',$adrSoc);
    $stmt->bindValue(':ztelF',$telSoc);
    $stmt->bindValue(':zobjet',$objet);
    $stmt2->bindValue(':zdateLimite',$dateLimite);
    $stmt2->bindValue(':zheureLimite',$heureLimite);
    
    $exec=$stmt->execute();

    if ($exec) {
        
        $_SESSION['succesMessage']='La lettre est ajouté avec succes';
        
    }
    else {
            $_SESSION['errorMessage']='il ya un problem d\'ajout, verifiez svp!';
        }

我正在尝试插入、更新3个表,一次查询一个表,查询insert或Update。决定。一次更新与一个表连接的3个表,以便查询。MySQL中存在多个表更新。您可以编写存储过程,该过程接受所有数据并执行所有需要的操作,从而实现所需的任何逻辑。从PHP端只执行一个查询
CALL proc({parameters})