我有两个数据库,数据库“ 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);
?>
答案 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());