如何使用另一数据库表中的一个选择插入数据

时间:2019-04-12 10:40:00

标签: php mysql

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

  

”错误:将TabelaX(ID,Nome,Dados)值插入(2000,XPTO2,   12345); “字段列表”中的未知列“ XPTO2”错误:INSERT INTO   TabelaX(ID,Nome,Dados)值(2033,XPTO3、1234567890);未知   “字段列表”中的“ XPTO3”列”

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

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

        mysqli_select_db($conn,"Servidor1");

        $sql = "INSERT INTO TabelaX (ID, Nome, Dados)
        VALUES ($row1, $row2, $row3);";
        if (mysqli_multi_query($conn, $sql)) {
            echo "New records created successfully";
        } else {
            echo "Error: " . $sql . "<br>" . mysqli_error($conn);
        }

    }
} else {
   echo "0 results";
 }

mysqli_close($conn);
?>

1 个答案:

答案 0 :(得分:0)

据我所读,您的当前方法可能是使用MySQL常规查询执行此操作的唯一方法。但是,如果直接在MySQL上执行此操作,则可以使用简单的INSERT INTO ... SELECT

INSERT INTO db1.TabelaX (ID, Nome, Dados)
SELECT ID, Nome, Dados
FROM db2.TabelaY;

一种可能性是在执行上述插入的MySQL上创建一个存储过程,然后从您的PHP代码中调用它:

$result = mysqli_query($conn, 
    "CALL YourProcName") or die("Query fail: " . mysqli_error());