php - 当设置保存 php 和 ajax 时,密码字段更新为空

标签 php jquery mysql ajax

所以我有设置页面,用户可以在其中更新有关他的信息。除密码外,所有字段都工作正常。当用户单击提交时,它会将 mysql 中的密码更新为空。我需要的是,如果密码字段为空,密码列中不会发生任何事情。

设置.php

$("#save").click(function(){
    var id=$("#hidid").val();
    var fname=$("#fname").val();
    var flastname=$("#flastname").val();
    var fusername=$("#fusername").val();
    var femail=$("#femail").val();
    var floc=$("#floc").val();
    var fdescr=$("#fdescr").val();
    var fslogan=$("#ffslogan").val();
    var day=$("#day").val();
    var month=$("#month").val();
    var year=$("#year").val();

    var noldpass=$("#noldpass").val();
    var roldpass=$("#roldpass").val();

    $.ajax({
        url:"s/fsave.php",
        type:"POST",
        data:"id=" + id + "&fname=" + fname + "&flastname=" + flastname + "&fusername=" + fusername + 
        "&femail=" + femail + "&floc=" + floc + "&fdescr=" + fdescr + "&fslogan=" + fslogan + 
        "&day=" + day + "&month=" + month + "&year=" + year + "&noldpass=" + noldpass + "&roldpass=" + roldpass,
        success:function(data){
            alert(data);
            $("#sc").show();
        }
    });
});

fsave.php

<?php 
include "db.php";

$id=$_POST['id'];
$fname=$_POST['fname'];
$flastname=$_POST['flastname'];
$fusername=$_POST['fusername'];
$femail=$_POST['femail'];
$floc=$_POST['floc'];
$fdescr=$_POST['fdescr'];
$fslogan=$_POST['fslogan'];
$day=$_POST['day'];
$month=$_POST['month'];
$year=$_POST['year'];
$noldpass=$_POST['noldpass'];
$roldpass=$_POST['roldpass'];
$fname=mysql_real_escape_string($fname);
$flastname=mysql_real_escape_string($flastname);
$fusername=mysql_real_escape_string($fusername);
$femail=mysql_real_escape_string($femail);
$fdescr=mysql_real_escape_string($fdescr);
$fslogan=mysql_real_escape_string($fslogan);
$noldpass=mysql_real_escape_string($noldpass);
$roldpass=mysql_real_escape_string($roldpass);

if ($noldpass != $roldpass){
    echo "Passwords dont match!";
    exit();
}elseif ($noldpass == $roldpass){
    $sqlp=mysql_query("UPDATE users set password='$roldpass' where id='$id'");
}else{
    $sql=mysql_query("UPDATE users SET name='$fname',lastname='$flastname',username='$fusername',email='$femail',
    location='$floc',bio='$fdescr',slogan='$fslogan',day='$day',month='$month',year='$year' WHERE id='$id'");

    if (mysql_affected_rows () == 1){
        echo "excellent";
    }else{
        echo mysql_error();
    }
}

?>

最佳答案

尝试改变条件

elseif ($noldpass == $roldpass)

elseif ($noldpass == $roldpass && trim($roldpass) != '')

关于php - 当设置保存 php 和 ajax 时,密码字段更新为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21072771/

相关文章:

php - 使用 PHP mail() 发送多部分/替代

php - 如何将值数组插入到 mysql 表的不同列中?

javascript - Jquery nextAll 和克隆不保留数据属性

javascript - 如何在 jquery 中检查标签是 img 还是 video?

php - 使用 PHP 表单中的 2 个字段从 MySQL 数据库检索信息的问题

php - 如何在 laravel 中使用模型调用参数化存储过程

php - 亚马逊 RDS : How to import database to amazon RDS instance?

javascript - 序列化表单并使用标签和段落作为数组中的键

javascript - 选择一列 (jQuery)

php - iOS与mysql数据库连接的安全性