sql UPDATE row ::如果输入为空,则保留当前值

时间:2013-02-03 21:12:02

标签: php sql database

我是新手,我不确定这是一个php问题还是一个sql,但我有一个没有必填字段的表单,在提交时会更新数据库行中的列。目前,当提交表单时,如果输入为空,则使用空白空间更新相应的列并删除曾经存在的值。我想弄清楚的是如何在表单提交时如此,如果输入值为空,则不会更新数据库列。

if ( isset($_POST['submit']) ) {
    $user = $_SESSION['user_name'];
    $signature = $mysqli->real_escape_string($_POST['signature']);
    $skype = $mysqli->real_escape_string($_POST['skype']);
    $facebook = $mysqli->real_escape_string($_POST['facebook']);

    $insert = $mysqli->query("
    UPDATE users 
    SET u_signature='$signature', u_skype='$skype', u_facebook='$facebook' 
    WHERE u_name='$user'
    ") or die ($mysqli->error);

2 个答案:

答案 0 :(得分:2)

<?php
if ( isset($_POST['submit']) ) {

    $user = $_SESSION['user_name'];
    $signature = mysql_real_escape_string($_POST['signature']);
    $skype = mysql_real_escape_string($_POST['skype']);
    $facebook = mysql_real_escape_string($_POST['facebook']);
    if(!empty($signature)){
     $update_fields[] = "u_signature='$signature'";
    }
    if(!empty($skype)){
     $update_fields[] = "u_skype='$skype'";
    }
    if(!empty($facebook)){
     $update_fields[] = "u_facebook='$facebook'";
    }
    if(count($update_fields) > 0){
      $nonempty_fields = implode(", ", $update_fields);
      $insert = mysql_query("
      UPDATE users 
      SET $nonempty_fields
      WHERE u_name='$user'
      ") or die(mysql_error());
    }
    else{
     echo "must not update the db because all required fields are empty";
    }

}
?>

答案 1 :(得分:0)

默认情况下,您可以在输入中包含旧数据,因此如果没有更改数据,则只会再次插入旧数据。否则:

$q_vars = "UPDATE users SET ";
if(!empty($signature))
{
$q_vars .= "signature = $signature ";
}

但是使用数组+ foreach来添加逗号,如果它不是最后一个。