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


Is there an easy way to skip updating a field to an empty value in a database?

当用户填写带有可选输入的表单时开始。这些值通过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条目是空的,那么它们不应该被放入数据库中。我之所以这么说,是因为如果数据库中已经存在一个值,我不想用空值覆盖该值

在这种情况下,您也不允许人们只输入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'];
}
?>

嗯…您可以使用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'];
}

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

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