是否有一种简单的方法可以跳过将字段更新为数据库中的空值?

时间:2011-12-26 22:44:47

标签: php

当用户填写带有可选输入的表单时,这将启动。这些值由AJAX传递到另一个PHP页面以插入到数据库中。如果特定输入为空,我不想更新存储在数据库中的数据。除了编写大量if语句之外,有没有办法检查输入值是否为空?如果它是空的,我该如何编写语句,以便MySQL不会更新数据库中的相应字段?

if(isset($_POST['f_name']) && isset($_POST['m_name']) && isset($_POST['l_name']) && isset($_POST['alt_name'])){
    $fname = $_POST['f_name'];
    $mname = $_POST['m_name'];
    $lname = $_POST['l_name'];
    $altname = $_POST['alt_name'];

如果某些$ _POST条目为空,则不应将它们放入数据库。我这样说是因为如果数据库中已存在一个值,我不想用空值覆盖该值。

3 个答案:

答案 0 :(得分:2)

在这种情况下,您也不允许用户只输入blank space / &bnsp;

<?php
$empty = FALSE;

foreach ($_POST as $key)
{
    if (!isset($key) || strlen(trim($key)) != 0)
    {
      $empty = TRUE;
    }
}

if (!$empty)
{
    $fname = $_POST['f_name'];
    $mname = $_POST['m_name'];
    $lname = $_POST['l_name'];
    $altname = $_POST['alt_name'];
}
?>

答案 1 :(得分:1)

嗯......您可以使用foreach来检查所有值。

$empty = FALSE;
   foreach ($_POST as $key) {
    if (!isset($key)) {
      $empty = TRUE;
       break;
   }
}

if (!$empty) {
$fname = $_POST['f_name'];
    $mname = $_POST['m_name'];
    $lname = $_POST['l_name'];
    $altname = $_POST['alt_name'];
}

答案 2 :(得分:-1)

我通常使用简写if语句(也称为三元运算符)来执行此类操作。您可以编写类似这样的SQL查询:

$query = "UPDATE my_table SET f_name = ".(!empty($fname) ? "'$fname'" : 'f_name').", m_name = ".(!empty($mname) ? "'$mname'" : 'm_name').", ";
//etc.. etc..