[英]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.