0

我有以下 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 不会存储在数据库中这意味着它存储为整数,谁能告诉我应该如何更改函数以接受起始 0 存储在 DB 中

 prtpwd=$('#prtpwd').val();

这是 ajax 从中获取 prtpwd 值的地方。

这是用于将数据设置到数据库中的函数

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,但前导零并未保存在数据库中

4

3 回答 3

0

您可以更改数据库中的列以用零填充它。只需将类型设置INTLength最大位数和属性为UNSIGNED ZEROFILL.

例子:

ALTER TABLE `tablename`
CHANGE `pwdfield` `pwdfield` INT( 8 ) UNSIGNED ZEROFILL NOT NULL

这使您的密码字段最多为 8 位,如果只给出 4 位,则用零填充,即如果您将一个数字1234放入数据库,则单元格会将其填充为00001234. 这就是它的UNSIGNED ZEROFILL用途

于 2012-08-31T10:31:25.487 回答
0

在查询更新密码时,请在 : 周围加上单引号$pwd

$query       = "UPDATE Sub SET Sign_pw='$pwd' WHERE Sub_id=$subid";

这应该强制该值是一个字符串。也可能值得这样做$subid

(另外,你为什么不利用 PHP 双引号符号?)

于 2012-08-31T14:33:13.200 回答
0

如果您将数据库中的列设置为“整数”,则当您尝试保存到数据库时将获得零。将列类型更改为 varchar 或 text 或类似的东西(取决于您使用的数据库)。还要确保将字符串传递给 ajax 调用,而不是整数。一个简单的方法来做到这一点......

var myString = ""
myString = myString + variableIThinkMightBeAnInteger
于 2012-08-31T10:13:11.830 回答