从一组变量传递到多个php数据库表

gdrx4gfi  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(453)

我有一个html表单中的变量,该表单当前正在发布到数据库表中的一个表中。
我想在同一个函数中同时将这些相同的变量发布到其他表中。这可能吗?下面是我当前的php函数,它正在成功地发布到一个表中

  1. <?php
  2. $var1 = $_POST['var1'];
  3. $var2 = $_POST['var2'];
  4. $var3 = $_POST['var3'];
  5. // Database connection
  6. $conn = new mysqli('localhost','user','password','database');
  7. if($conn->connect_error){
  8. echo "$conn->connect_error";
  9. die("Connection Failed : ". $conn->connect_error);
  10. } else {
  11. $stmt = $conn->prepare("insert into table1(var1, var2, var3) values(?, ?, ?)");
  12. $stmt->bind_param("sss", $var1, $var2, $var3);
  13. $execval = $stmt->execute();
  14. echo $execval;
  15. $stmt->close();
  16. $conn->close();
  17. }
  18. ?>

我想把下面的变量发布到同一个数据库中的多个表中,所以我认为下面的方法不起作用-

  1. <?php
  2. $var1 = $_POST['var1'];
  3. $var2 = $_POST['var2'];
  4. $var3 = $_POST['var3'];
  5. // Database connection
  6. $conn = new mysqli('localhost','user','password','database');
  7. if($conn->connect_error){
  8. echo "$conn->connect_error";
  9. die("Connection Failed : ". $conn->connect_error);
  10. } else {
  11. $stmt = $conn->prepare("insert into table1(var1, var2, var3) values(?, ?, ?)");
  12. $stmt->bind_param("sss", $var1, $var2, $var3);
  13. $stmt = $conn->prepare("insert into table2(var1) values(?)");
  14. $stmt->bind_param("s", $var1);
  15. $stmt = $conn->prepare("insert into table3(var2, var3) values(?, ?)");
  16. $stmt->bind_param("ss", $var2, $var3);
  17. $execval = $stmt->execute();
  18. echo $execval;
  19. $stmt->close();
  20. $conn->close();
  21. }
  22. ?>
du7egjpx

du7egjpx1#

尝试调用$stmt->execute();每次调用$stmt->bind_param()之后;
看看这个在同一个调用中执行多个查询的已解决问题。pdo对多个查询的支持(pdo\ U mysql、pdo\ U mysqlnd)

mjqavswn

mjqavswn2#

是的,这是可能的。你可以做你现在正在做的,但是你需要打电话 execute() 方法。除此之外,将其 Package 到事务中也是一个好主意。事务有助于确保所有或无操作都成功。如果其中一个失败了,其他的就不会被执行。
您的固定代码应该如下所示:

  1. <?php
  2. $var1 = $_POST['var1'];
  3. $var2 = $_POST['var2'];
  4. $var3 = $_POST['var3'];
  5. // Database connection
  6. mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // switches error reporting on
  7. $conn = new mysqli('localhost','user','password','database');
  8. $conn->set_charset('utf8mb4'); // always set the charset
  9. // Start transaction
  10. $conn->begin_transaction();
  11. $stmt = $conn->prepare("insert into table1(var1, var2, var3) values(?, ?, ?)");
  12. $stmt->bind_param("sss", $var1, $var2, $var3);
  13. $stmt->execute();
  14. $stmt = $conn->prepare("insert into table2(var1) values(?)");
  15. $stmt->bind_param("s", $var1);
  16. $stmt->execute();
  17. $stmt = $conn->prepare("insert into table3(var2, var3) values(?, ?)");
  18. $stmt->bind_param("ss", $var2, $var3);
  19. $stmt->execute();
  20. // End transaction
  21. $conn->commit();
展开查看全部

相关问题