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

From one set of variables post to multiple Php database tables

我的数据库 table.

中有一个 HTML 表格的变量,目前正在 post 编辑为一个 table

我想 post 在同一个函数中同时将这些相同的变量 table 传递给其他 table 。这可能吗?这是我当前的 PHP 函数,它 post 成功转换为一个 table

<?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();
    }
?>

而且我想在同一个数据库中将以下变量 post 转换为多个 table,所以考虑了以下但它不起作用 -

<?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();
    }
?>

尝试调用$stmt->execute();每次调用 $stmt->bind_param();

之后

看看这个已解决的问题,在同一个调用中执行多个查询。 PDO support for multiple queries (PDO_MYSQL, PDO_MYSQLND)

是的,这是可能的。你可以做你现在正在做的事情,但你需要在准备好每个查询后调用 execute() 方法。除此之外,将其包装在交易中也是一个好主意。事务可帮助您确保所有或 none 操作都成功。如果其中之一失败,则不会执行其他操作。

您的固定代码应如下所示:

<?php
$var1 = $_POST['var1'];
$var2 = $_POST['var2'];
$var3 = $_POST['var3'];


// Database connection
mysqli_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); 
$stmt->execute();

// End transaction
$conn->commit();