通过ajax将整数转换为字符串

时间:2012-08-31 10:06:19

标签: php javascript ajax

我有以下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中

3 个答案:

答案 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双引号表示法?)