我有一个简单的表单,用于更新表中的列,但如果表单中的文本字段为空,则它还会清空数据库中的列。这是我当前脚本的重影代码:
https://ghostbin.com/paste/jd9b9
基本上,我想要它,如果该字段为空,则忽略或不提交或跳过。
谢谢!
答案 0 :(得分:1)
if (!empty($_POST))
检查您的post数组是否包含任何数据,这意味着如果在post数组中设置了 one 字段,则每个insert语句都会触发。相反,您需要检查每个单独的字段以查看它是否已设置,以及它是否具有您感兴趣的值(即,不是空字符串)。换句话说:
将if (!empty($_POST)) {
更改为if(isset($_POST['username']) && $_POST['username'] != '') {
,以及相应的$_POST
键(用户名,描述等)
显然,empty($_POST['username'])
也可以工作,而不是isset
和后续检查。感谢评论
答案 1 :(得分:0)
发生这种情况的原因是因为您只是检查$_POST
是否为空,然后设置每个单独的值。因此,如果您在一个字段中输入值,则所有其他字段也将更新。
您可以稍微整合“设置数据”代码。
尝试以下方法:
if (!empty($_POST)) {
$toUpdate = array();
// Loop through each of your values...
foreach (array('username', 'description', 'userdescription', 'heading', 'subheading', 'subheading2') as $field) {
// Check individual values are not empty and also not full of spaces
if (!empty($_POST[$field]) && trim($_POST[$field]) !== '') {
// Build some SQL additions
$toUpdate[] = $field . ' = ' . $link->real_escape_string(trim($_POST[$field]));
}
}
if (!empty($toUpdate)) {
// Perform one single update query
$link->query("UPDATE firstsection SET " . implode(', ', $toUpdate) . " WHERE id = 2");
}
}
答案 2 :(得分:0)
解决此问题的最简单方法:
parentScope.show = 1;
childScope.show = 2;
在更智能的版本(数组)中,你可以看到先生。 scrowler的答案。他给了你最好的解决方案。