【发布时间】:2015-06-25 04:01:09
【问题描述】:
我有多个<forms>,每个都有 1 个表单元素(比如文本框)。但是所有这些元素的值都在一个 MySQL 表中。这些元素可以通过单独提交相应的表单来单独修改(即插入/更新/删除)。请参阅this fiddle 了解 html 结构的基本概念。
HTML
<form class="form-horizontal" id="form1" method="post">
<div class="form-group">
<label class="col-xs-3 control-label">Form 1</label>
<div class="col-xs-10">
<input class="form-control" type="text" name="element1" maxlength="50" />
<br>
<button type="button" class="btn btn-default btn-xs">Cancel</button>
<button type="submit" class="btn btn-primary btn-xs">Save Changes</button>
</div>
</div>
</form>
<form class="form-horizontal" id="form2" method="post">
<div class="form-group">
<label class="col-xs-3 control-label">Form 2</label>
<div class="col-xs-9">
<input class="form-control" type="text" name="element2" maxlength="50" />
<br>
<button type="button" class="btn btn-default btn-xs">Cancel</button>
<button type="submit" class="btn btn-primary btn-xs">Save Changes</button>
</div>
</div>
</form>
PHP
if(isset($_POST['element1'])){
if(empty($_POST['element1'])){
$element1= ''; //Update empty value if $_POST is empty
}
else{
$element1= $_POST['element1'];
}
}
else{
$element1= null;
}
if(isset($_POST['element2'])){
if(empty($_POST['element2'])){
$element2= ''; //Update empty value if $_POST is empty
}
else{
$element2= $_POST['element2'];
}
}
else{
$element2= null;
}
$sql_update = "UPDATE element_table SET element1=COALESCE(NULLIF('" . mysql_real_escape_string($element1) . "',''), element1), element2=COALESCE(NULLIF('" . mysql_real_escape_string($element2) . "',''),element2) WHERE id=01";
MySQL 表
________________________________________________________________________________
| id | element1 | element2 | element3 | element4 | ... |
________________________________________________________________________________
| 01 | 1 | 2 | 3 | 4 | ... |
要求
- 当我提交表单 1 时,$_POST['element2'] 没有设置,所以我不想更改 element2。更新查询仅修改 element1。
-
当我提交 #form1 时,
一个。如果 $_POST['element1'] 不为空,则更新 POST 变量中的值。
b.如果 $_POST['element1'] 为空,则将 null 值更新为 db。即将该列留空。
问题
第 1 点和第 2.a 点。工作正常,但是我无法完成第 2.b 点。也许我以错误的方式使用 COALESCE。有人可以告诉我如何在仍然使用 COALESCE 的同时将空值更新到 db 吗?谢谢
附:由于某些我无法在此披露的原因,无法更改数据库设计。
【问题讨论】: