簡體   English   中英

如何獲取UPDATE僅影響一行(PHP / MySQL)

[英]How to Get UPDATE to only affect one row (PHP/MySQL)

這是我的查詢:

$student_id = 34;
$user_id = 1;
$lesson_id = 25;

$query = ("UPDATE lessons SET 
assigned='1',
student_id='$student_id'
WHERE user_id='$user_id'
AND lesson_id='$lesson_id'")

我正在嘗試運行UPDATE以僅影響一行。 我有一張這樣的桌子:

_____________________________________
user_id|lesson_id|assigned|student_id
_______|_________|________|__________
1      |16       |1       |12
_______|_________|________|__________
1      |25       |0       |0
_______|_________|________|__________
1      |25       |0       |0
_______|_________|________|__________
1      |7        |1       |34
_______|_________|________|__________
1      |13       |1       |12
_______|_________|________|__________
1      |13       |0       |0
_______|_________|________|__________

當我執行此UPDATE時,我發現所有匹配的行都已更新。 因此,如果我嘗試根據lesson_id 25更新,則兩行都會更改。 我只需要更改一個查詢即可。

我嘗試將LIMIT 1添加到查詢中,但只允許執行一次。 我返回到表單,然后將所有信息再次提交給查詢,但是第二次沒有執行。 我認為那很奇怪。

那么,我想念什么?

嘗試使用:

$query = ("UPDATE lessons SET 
    assigned='1',
    student_id='$student_id'
    WHERE user_id='$user_id'
    AND lesson_id='$lesson_id'
    AND assigned ='0' LIMIT 1");

這個問題沒有多大意義。 您有一個表,其中有兩行完全相同,並且您的條件是更新這些行。 那么,您如何限制更新?

您應該添加一些唯一的列來標識記錄。 現在,您所能做的就是LIMIT語句。

您的Where語句影響這些行:

user_id|lesson_id|assigned|student_id
_______|_________|________|__________
1      |25       |0       |0
_______|_________|________|__________
1      |25       |0       |0
_______|_________|________|__________

您應該真正考慮重新設計數據庫。 但是,如果不可能,則在WHERE條件下使用分配的字段。 WHERE assigned <> 1

暫無
暫無

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

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