【问题标题】:PHP SQL : How to save data to multiple database from one html form OR how to copy data from one database to another database automaticallyPHP SQL:如何将数据从一个html表单保存到多个数据库或如何将数据从一个数据库自动复制到另一个数据库
【发布时间】:2015-06-15 01:06:28
【问题描述】:

我有一个 html 表单,比如说示例

<form action="form.php" method="post">
First name:<br>
<input type="text" id="fname" name="fname">
<br>
Last name:<br>
<input type="text" id="lname" name="lname">
<br><br>
<input type="submit" value="Submit">
</form>

和form.php

<?php
$servername = "localhost";
$username = "database1";
$password = "xxxxxxxx";
$dbname = "database1";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

//escape variables for security
$fname = mysqli_real_escape_string($conn, $_POST['fname']);
$lname = mysqli_real_escape_string($conn, $_POST['lname']);

$sql = "INSERT INTO mytable (fname,lname)
VALUES ('$fname','$lname')";

if ($conn->query($sql) === TRUE) {
   echo "Successfully Saved";

    } else {
    echo "Error: Go back and Try Again ! " . $sql . "<br>" . $conn->error;
}

$conn->close();

?>

form.php 正在将该数据保存到database1

我希望将该数据与database1 一起保存到另一个数据库database2

有可能吗??如果是,那么应该对代码进行哪些更改?

如果不可能,那么是否可以自动将数据从database1 复制到database2?每当在database1 中添加新行时,它应自动复制到database2

我希望相同的数据存在于两个不同的数据库中。我怎样才能实现上述任何一项??

【问题讨论】:

    标签: php html mysql database


    【解决方案1】:

    您只需从 php 创建到数据库的新连接。

    <?php
       $servername = "localhost";
       $username = "database1";
       $password = "xxxxxxxx";
       $dbname = "database1";
    
    
       $servernameS = "localhost";
       $usernameS = "database2";
       $passwordS = "xxxxxxxx";
       $dbnameS = "database2";
    
       // Create connection
       $conn = new mysqli($servername, $username, $password, $dbname);
       $connS = new mysqli($servernameS, $usernameS, $passwordS, $dbnameS);
    
       // Check connection
      if ($conn->connect_error) {
           die("Connection failed: " . $conn->connect_error);
       }
       if ($connS->connect_error) {
           die("Connection failed: " . $connS->connect_error);
       }
    
       //escape variables for security
       $fname = mysqli_real_escape_string($conn, $_POST['fname']);
       $lname = mysqli_real_escape_string($conn, $_POST['lname']);
    
       $sql = "INSERT INTO mytable (fname,lname) 
       VALUES ('$fname','$lname')";
    
        if ($conn->query($sql) === TRUE) {
         echo "Successfully Saved";
    
        } else {
          echo "Error: Go back and Try Again ! " . $sql . "<br>" . $conn->error;
        }
    
        if ($connS->query($sql) === TRUE) {
         echo "Successfully Saved";
    
        } else {
          echo "Error: Go back and Try Again ! " . $sql . "<br>" . $connS->error;
        }
        $conn->close();
        $connS->close();
    
       ?>
    

    【讨论】:

      【解决方案2】:

      你可以使用类似mysqli::selectDB method:

      <?php
      $mysqli = new mysqli("localhost", "my_user", "my_password", "test");
      
      /* check connection */
      if (mysqli_connect_errno()) {
          printf("Connect failed: %s\n", mysqli_connect_error());
          exit();
      }
      
      /* return name of current default database */
      if ($result = $mysqli->query("SELECT DATABASE()")) {
          $row = $result->fetch_row();
          printf("Default database is %s.\n", $row[0]);
          $result->close();
      }
      
      /* change db to world db */
      $mysqli->select_db("world");
      
      /* return name of current default database */
      if ($result = $mysqli->query("SELECT DATABASE()")) {
          $row = $result->fetch_row();
          printf("Default database is %s.\n", $row[0]);
          $result->close();
      }
      
      $mysqli->close();
      ?>
      

      查看manual

      与您在 SO 的 question 类似。

      【讨论】:

        【解决方案3】:

        听起来您需要设置复制。

        Here 是关于复制的官方文档。 Here 是一个更简单的分步设置指南。

        如果复制不是您想要的,您可以通过连接到 database2 和 database1 来完成同样的事情,然后在两者上运行一次查询。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-22
          • 1970-01-01
          • 2011-11-07
          • 1970-01-01
          • 2017-04-06
          相关资源
          最近更新 更多