duandi8613 2014-01-12 08:33 采纳率: 100%
浏览 33
已采纳

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

So i have settings page where user can update info about him. All fields work fine except the password. When user clicks submit it updates the password to nothing in mysql. What i need is that if password fields are empty nothing happens in password column.

settings.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();
    }
}

?>
  • 写回答

1条回答 默认 最新

  • drox90250557 2014-01-12 08:39
    关注

    Try changing the condition

    elseif ($noldpass == $roldpass)
    

    to

    elseif ($noldpass == $roldpass && trim($roldpass) != '')
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用
  • ¥15 C++ yoloV5改写遇到的问题
  • ¥20 win11修改中文用户名路径
  • ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
  • ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程