如何在另一个更新查询中更新新表?

时间:2016-08-22 12:41:18

标签: php mysql sql

我有一个遗留系统,我有一个php文件,更新一个表。现在我向我的数据库添加了一个新表,我也想更新该表。问题是(由于某些原因)我不能使用另一个查询,我必须更改当前查询。

简化的以前的查询:$q = "UPDATE t1 SET var=$var WHERE id=1";

我无法使用"UPDATE t1,t2 SET t1.var=$var t2.var=$var2 WHERE id=1",因为它会增加太多的处理时间。 是否可以在一个查询中运行两个更新查询?我在整个系统中使用mysql命令,我无法将其更改为mysqli

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码同时更新2个表格。 : - )

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

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

$sql = "UPDATE t1 SET var=$var WHERE id=1";
$sql2 = "UPDATE t2 SET var=$var WHERE id=1";

if ($conn->query($sql) === TRUE) {
    echo "t1 updated successfully";
} else {
    echo "Error updating t1: " . $conn->error;
}

if ($conn->query($sql2) === TRUE) {
    echo "t2 updated successfully";
} else {
    echo "Error updating t2: " . $conn->error;
}

$conn->close();
?>

答案 1 :(得分:0)

对于任何遇到此问题的人,有两种简单的方法可以做到这一点:

方法1:

UPDATE Books, Orders
SET Orders.Quantity = Orders.Quantity + 2,
    Books.InStock = Books.InStock - 2
WHERE
    Books.BookID = Orders.BookID
    AND Orders.OrderID = 1002;

方法2(内部联接):

UPDATE t1
INNER JOIN t2 ON t2.t1_id = t1.id
INNER JOIN t3 ON t2.t3_id = t3.id
SET t1.a = 'something',
    t2.b = 42,
    t3.c = t2.c
WHERE t1.a = 'blah';