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