如果文本字段为空,PHP跳过?

时间:2015-04-28 01:30:29

标签: php mysql

我有一个简单的表单,用于更新表中的列,但如果表单中的文本字段为空,则它还会清空数据库中的列。这是我当前脚本的重影代码:

https://ghostbin.com/paste/jd9b9

基本上,我想要它,如果该字段为空,则忽略或不提交或跳过。

谢谢!

3 个答案:

答案 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的答案。他给了你最好的解决方案。