如何使用另一个数据库表中的一个选择来更新数据

时间:2019-04-12 14:54:18

标签: php mysql sql

我有两个数据库,数据库“ Servidor1”中有一个表“ TabelaX”,没有数据,另一个数据库“ Servidor2”中有一个表“ TabelaY”。我想在表“ TabelaY”中选择一个,并用她的数据在另一个数据库中的表“ TabelaX”中进行一个更新。我已经编写了一些代码,但是无法正常工作。

 <?php

      $conn= mysqli_connect('localhost','root',null,'Servidor2') or die 
     (mysqli_connect_error());


     if (!$conn) {
       die("Falha de conexao: ". mysqli_connect_error());
      }
        $ID = $_POST['ID'];
        $sql = "SELECT * FROM TabelaY WHERE ID = $ID";
        $result = mysqli_query($conn, $sql);

      mysqli_select_db($conn,"Servidor1");

         if (mysqli_num_rows($result) > 0) {
       while($row = mysqli_fetch_assoc($result)) {
          $row1 = $row["ID"];
            $row2 = $row["Data"];

         }
         } else {
          echo "0 results";
      }

      $sql = "INSERT INTO Servidor1.TabelaX (ID, Data)
        SELECT ID, Data
        FROM Servidor3.TabelaW
        WHERE ID = $ID;";
      $sql = "UPDATE Servidor1.TabelaX SELECT ID, Data FROM 
           Servidor3.TabelaW SET Data = $row2 WHERE $row1 = $ID;";
             if (mysqli_multi_query($conn, $sql)) {
            echo "Dados Inseridos";
      } if (mysqli_multi_query($conn, $sql)) {
          echo "Dados Atualizados";
      }


       mysqli_close($conn);

1 个答案:

答案 0 :(得分:0)

我不知道您的查询要做什么,因为您两次分配给$sql却从未执行过第一个查询,但是如果您要问如何根据tableY中的数据更新tableX中的行,然后:

    UPDATE Servidor1.TabelaX as x, Servidor2.TabelaY as y
       SET x.Data = y.Data
     WHERE x.id = y.id
       AND x.id = $someIdForWhichYouWantToUpdate

也不要这样做:

        $ID = $_POST['ID'];
        $sql = "SELECT * FROM TabelaY WHERE ID = $ID";

想象一下,当用户将1; DROP DATABASE Servidor1发布到表单中时会发生什么。这称为SQL注入,您的代码充满了漏洞。