为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
一只名叫tom的猫 2023-06-24 17:14:18
我有一个来自 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();    }?>
查看完整描述

2 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

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


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


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


查看完整回答
反对 回复 2023-06-24
?
慕森王

TA贡献1777条经验 获得超3个赞

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

 PDO 支持多个查询(PDO_MYSQL、PDO_MYSQLND)


查看完整回答
反对 回复 2023-06-24
  • 2 回答
  • 0 关注
  • 89 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信