我有以下ajax代码来更新我的数据库表中的密码,
$.ajax({
type: 'POST',
url: root_url + '/services/services.php?method=updatesubpwd',
data: {
'sid': ptcid,
'pwd': prtpwd // <-- the $ sign in the parameter name seems unusual, I would avoid it
},
//data: "sid=" + ptcid + "&pwd=" + prtpwd,
async: true,
success: function (data) {
alert(prtpwd);
if ($('.dynapwdblock') && $('.dynapwdblock').css('display')=="none") {
$('#prepwd').val(prtpwd);
$('.prtpwd').val(prtpwd);
$('#prtpwdval').val(prtpwd);
$('.apfnp').remove();
$('.dynapwdblock').show(200);
//alert(data);
}
},
...
当我在ajax的数据中给出prtpwd
字段的值时,一切似乎都正常工作,但是在数字的情况下,当我给出以“0”开头的数字或以“0”系列开头时第一个0没有存储在数据库中,这意味着它存储为Integer,任何人都可以告诉我应该如何更改函数以便接受起始0存储在DB中
prtpwd=$('#prtpwd').val();
这是ajax从中获取prtpwd值的地方。
这是用于将数据设置到DB
的函数function updateSubPassword($subid, $pwd)
{
$query = "UPDATE Sub SET Sign_pw=".$pwd." WHERE Sub_id=" . $subid;
$queryresult = mysql_query($query);
if ($queryresult) {
return 1;
} else
return 0;
}
虽然数据类型为Varchar
,但前导零不会保存在DB中答案 0 :(得分:0)
如果您将数据库中的列设置为“整数”,则在尝试保存到数据库时将获得零。将列类型更改为varchar或text或类似的东西(取决于您使用的数据库)。还要确保将字符串传递给ajax调用而不是整数。这样做的简单方法.....
var myString = ""
myString = myString + variableIThinkMightBeAnInteger
答案 1 :(得分:0)
您可以更改数据库中的列以使用零填充它。只需将类型设置为INT
,其中Length
的最大数字和属性为UNSIGNED ZEROFILL
。
示例:
ALTER TABLE `tablename`
CHANGE `pwdfield` `pwdfield` INT( 8 ) UNSIGNED ZEROFILL NOT NULL
这使得您的密码字段最多为8位,如果只给出4,则用零填充,即如果您将数字1234
放入数据库,则单元格将填充到{ {1}}。这就是00001234
的用途
答案 2 :(得分:0)
在执行查询以更新密码时,请在$pwd
附近添加单引号:
$query = "UPDATE Sub SET Sign_pw='$pwd' WHERE Sub_id=$subid";
这应该强制该值为字符串。对$subid
也可以这样做。
(另外,为什么不利用PHP双引号表示法?)