1

我是新手,我不确定这是一个 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);
4

2 回答 2

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";
    }

}
?>
于 2013-02-03T21:26:02.587 回答
0

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

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

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

于 2013-02-03T21:15:43.163 回答