为什么密码存不到数据库上。。

用户名能存上,但是密码存不上。。。刚学照猫画虎写的,不知道哪里错了。。
首先:$("#psw").val()是可以取到值的。
js代码:
function regist(){
$.ajax({

                url:"/h51702/cui/shuai/regist4ajax",
                type:"get",
                data:{
                    username:$("#username").val(),
                    psw:$("#psw").val(),
                },
                success:function(res){
                    alert(res);
                    if(res=="成功"){
                        location.href = "/h51702/cui/shuai/login";
                    }else{
                        //alert(res.msg);
                    }
                }
            })
        }else{
            alert("信息输入有误,请重新填写")
        }
    }

php代码:
public function regist4ajax($username="",$psw=""){

    $userItem = Db::query('select * from users where username=?',[$username]);
    //$userItem = db("users")->where('username',$username)->find();
    if(empty($userItem)){
        $result = Db::execute('insert into users(username,psw) values (?,?)',[$username,$psw]);
        if($result){
            return "成功";
        }
        return"失败";
    }else{
        return "用户名已经注册";            
    }
}

数据库中:
id int(11) AI PK
username varchar(45)
psw varchar(45)
creat_date datetime
图片描述

阅读 3.7k
4 个回答

为啥要用get方式提交用户名和密码呢?
改用post吧,然后看post是否接收到了数据。

可能出错的地方很多,你的表单,数据库结构都不知道。

说说基本错误定位方法,整个注册有几个步骤:
页面内获取数据》ajax传输到执行页》执行页请求数据库更改》数据库储存

带着你的数据一步步走来确认,比如 $("#psw").val() 是不是真的获取了密码信息,然后 ajax 接收页是不是真的就收到这个数据,然后执行代码到底执行了一条什么样的 query,这条 query 直接在数据库执行能不能成功。这么一步步走,找到哪步卡住了,就容易找出问题所在了。

可能在以下几个地方出错,具体职能靠自己排查了。

  1. $("#psw").val()是否真的获取到了密码输入框的值

  2. 由于你说用户名能存上,所以我觉得你后台应该是获取到了数据,至于为啥密码没存上,你看下你数据库中密码存取字段是不是psw,这个要和'insert into users(username, psw) values (?, ?)'这里面的psw相应

  3. 另外,你看下你的数据库psw字段是否是字符串类型比如VARCHARCHAR或者TEXT类型。

1、前端检查是否是否获取到密码值
2、后端检查是否获取到密码值
3、查看表中密码字段是否是对应的数据类型,以及密码长度是否超过表中密码字段设置的长度

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题