[英]mysql update - skip blank fields?
我需要知道這樣做的正確方法。 我有一個表單,有人可以填寫3個不同的輸入來更新他們的數據。
他們可以留下一個空白,如果他們想要,只需更新其他兩個或只是一個。 隨你。
所以,如果我更新為:
mysql_query("UPDATE table SET field1=input AND field2=BLANK AND filed3=input WHERE ID=123);
它會留空字段嗎? 只是跳過它們? 或者它會用空字符串/空白字段替換字段?
如果這是錯誤的方法,那么正確的方法是什么? 謝謝!
它將用空值替換它們。 正確的方法是不要將這些項放在查詢中:
if (empty($field1) && empty($field2) && empty($field3) {
// show error message, nothing to do
return;
}
$updates = array();
if (!empty($field1))
$updates[] = 'field1="'.mysql_real_escape_string($field1).'"';
if (!empty($field2))
$updates[] = 'field2="'.mysql_real_escape_string($field2).'"';
if (!empty($field3))
$updates[] = 'field3="'.mysql_real_escape_string($field3).'"';
$updates = implode(', ', $updates);
mysql_query("UPDATE table SET $updates WHERE ID=123");
顯然,將更改放在關聯數組或對象中然后遍歷它們會更清晰。
如果用戶使用''
作為輸入,則以下UPDATE
語句應保持字段不變,否則,它將使用給定的輸入來更新字段。
UPDATE table
SET field1 = CASE
WHEN input = '' THEN field1
ELSE input
END
, field2 = CASE
WHEN input2 = '' THEN field2
ELSE input2
END
, field3 = CASE
WHEN input3 = '' THEN field3
ELSE input3
END
WHERE ID = 123
這是通過CASE語句完成的。 WHEN
條件檢查輸入它是什么,如果是''
(基本上省略)它將使用field1的當前值來更新field1,基本上保持不變。 如果有值,則會使用該新值。
如果您不想更新某個字段,則必須從UPDATE
語句中刪除該字段。
UPDATE table
SET field1=input AND filed3=input
WHERE ID=123
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.