我是新手,我不确定这是一个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);
答案 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来添加逗号,如果它不是最后一个。