我有两个数据库,数据库“ 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);
答案 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注入,您的代码充满了漏洞。