我需要知道这样做的正确方法.我有一个表单,有人可以填写3个不同的输入来更新他们的数据.
他们可以留下一个空白,如果他们想要,只需更新其他两个或只是一个.随你.
所以,如果我更新为:
mysql_query("UPDATE table SET field1=input AND field2=BLANK AND filed3=input WHERE ID=123);
Run Code Online (Sandbox Code Playgroud)
它会留空字段吗?只是跳过它们?或者它会用空字符串/空白字段替换字段?
如果这是错误的方法,那么正确的方法是什么?谢谢!
Abh*_*ert 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");
Run Code Online (Sandbox Code Playgroud)
显然,将更改放在关联数组或对象中然后遍历它们会更清晰.
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
Run Code Online (Sandbox Code Playgroud)
这是通过CASE语句完成的.该WHEN条件检查,看看有什么输入它,如果它''(基本上省略),它会使用field1的当前值更新与FIELD1,基本上离开它不变.如果有值,则会使用该新值.
| 归档时间: |
|
| 查看次数: |
2539 次 |
| 最近记录: |