从一组变量发布到多个 Php 数据库表

我有一个来自 HTML 表单的变量,该变量当前已发布到我的数据库表中的一个表中。


我想在同一函数中同时将这些相同的变量发布到其他表。这可能吗?这是我当前的 PHP 函数,它已成功发布到一张表


<?php

    $var1 = $_POST['var1'];

    $var2 = $_POST['var2'];

    $var3 = $_POST['var3'];



    // Database connection

    $conn = new mysqli('localhost','user','password','database');

    if($conn->connect_error){

        echo "$conn->connect_error";

        die("Connection Failed : ". $conn->connect_error);

    } else {

        $stmt = $conn->prepare("insert into table1(var1, var2, var3) values(?, ?, ?)");

        $stmt->bind_param("sss", $var1, $var2, $var3);   

        $execval = $stmt->execute();

        echo $execval;

        $stmt->close();

        $conn->close();

    }

?>

我希望将以下变量发布到同一数据库中的多个表,因此正在考虑以下内容,但它不起作用 -


<?php

    $var1 = $_POST['var1'];

    $var2 = $_POST['var2'];

    $var3 = $_POST['var3'];



    // Database connection

    $conn = new mysqli('localhost','user','password','database');

    if($conn->connect_error){

        echo "$conn->connect_error";

        die("Connection Failed : ". $conn->connect_error);

    } else {

        $stmt = $conn->prepare("insert into table1(var1, var2, var3) values(?, ?, ?)");

        $stmt->bind_param("sss", $var1, $var2, $var3);

        $stmt = $conn->prepare("insert into table2(var1) values(?)");

        $stmt->bind_param("s", $var1);

        $stmt = $conn->prepare("insert into table3(var2, var3) values(?, ?)");

        $stmt->bind_param("ss", $var2, $var3); 

        $execval = $stmt->execute();

        echo $execval;

        $stmt->close();

        $conn->close();

    }

?>


一只名叫tom的猫
浏览 92回答 2
2回答

慕慕森

对的,这是可能的。您可以执行现在正在执行的操作,但需要execute()在准备每个查询后调用方法。除此之外,将其包装在事务中也是一个好主意。事务可帮助您确保所有操作成功或全部失败。如果其中一个失败,其他的就不会被执行。您的固定代码应如下所示:<?php$var1 = $_POST['var1'];$var2 = $_POST['var2'];$var3 = $_POST['var3'];// Database connectionmysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // switches error reporting on$conn = new mysqli('localhost','user','password','database');$conn->set_charset('utf8mb4'); // always set the charset// Start transaction$conn->begin_transaction();$stmt = $conn->prepare("insert into table1(var1, var2, var3) values(?, ?, ?)");$stmt->bind_param("sss", $var1, $var2, $var3);$stmt->execute();$stmt = $conn->prepare("insert into table2(var1) values(?)");$stmt->bind_param("s", $var1);$stmt->execute();$stmt = $conn->prepare("insert into table3(var2, var3) values(?, ?)");$stmt->bind_param("ss", $var2, $var3);&nbsp;$stmt->execute();// End transaction$conn->commit();

慕森王

尝试调用 $stmt->execute(); 每次调用 $stmt->bind_param() 后; PDO 支持多个查询(PDO_MYSQL、PDO_MYSQLND)
打开App,查看更多内容
随时随地看视频慕课网APP