簡體   English   中英

SQL多表更新問題

[英]SQL multiple table update issue

我正在嘗試同時更新兩個表。 該操作已成功完成。但是,它將更新表中的所有記錄,而不是指定的記錄。 我在這里嘗試過建議,但無濟於事。 任何想法可能是什么問題? 我的代碼如下所示。

$sql = "UPDATE $receiverTable, $currUserTable 
SET $currUserTable.originator = '$curr_username', 
$receiverTable.originator = '$curr_username', 
$currUserTable.status = '$currValue', 
$receiverTable.status = '$currValue' 
WHERE ($receiverTable.username = '$curr_username') 
OR ($currUserTable.username = '$curr_username')";

您對JOIN沒有任何條件(您真的不應該再用逗號編寫JOIN了),因此每一行都被JOIN到其他每一行,這意味着它們都在其中WHERE條件之一的行中具有JOIN是正確的,因此它們都得到了更新。 用適當的條件重寫您的JOIN ,問題將消失。 就像是:

UPDATE $receiverTable
JOIN $currUserTable ON $currUserTable.somecolumn = $receiverTable.somecolumn
SET $currUserTable.originator = '$curr_username', 
$receiverTable.originator = '$curr_username', 
$currUserTable.status = '$currValue', 
$receiverTable.status = '$currValue' 
WHERE ($receiverTable.username = '$curr_username') 
OR ($currUserTable.username = '$curr_username')

如果無法聯接這些表,則需要將UPDATE編寫為兩個單獨的查詢。

不用一次更新就可以使用事務來包裝兩個更新命令,例如this

BEGIN TRANSACTIONS;

UPDATE TABLE1
SET Col1 = 'SomeValue'
WHERE Cond1 = 'SomeCond';

UPDATE TABLE2
SET Col2 = 'SomeValue'
WHERE Cond2 = 'SomeCond';

COMMIT;

UPDATE

之后,我相信使用phpi它將看起來像:

mysqli_autocommit($dbConnection, false);

$query1 = " UPDATE $receiverTable set originator = '$curr_username', 
status = '$currValue' WHERE username = '$curr_username' "
$query2 = " UPDATE $currUserTable set originator = '$curr_username', 
status = '$currValue' WHERE username = '$curr_username' "

mysqli_query($dbConnection, $query1); 
mysqli_query($dbConnection, $query2);

mysqli_commit($dbConnection);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM