我需要知道这样做的正确方法。 我有一个表格,有人可以填写3个不同的输入来更新他们的数据。
如果他们愿意,他们可以留下一个空白,只更新另外两个或只更新一个。不管。所以,如果我更新为:
mysql_query("UPDATE table SET field1=input AND field2=BLANK AND filed3=input WHERE ID=123);
它会保留空白字段吗?只是跳过它们?或者它会用空字符串/空白字段替换字段?
如果这是错误的方法,那么正确的方法是什么? 谢谢!
答案 0 :(得分:10)
它将用空白值替换它们。正确的方法是不将这些项放在查询中 所有:
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");
显然,将更改放在关联数组或对象中,然后遍历它们会更清晰。
答案 1 :(得分:5)
如果用户使用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,基本上保持不变。如果有值,则会使用该新值。
答案 2 :(得分:0)
如果您不想更新某个字段,则必须从UPDATE
语句中删除该字段。
UPDATE table
SET field1=input AND filed3=input
WHERE ID=123