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

converting integer to string through ajax

本文关键字:字符串 转换 整数 ajax 通过      更新时间:2023-09-26

我有以下 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 存储在数据库中

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

如果您将数据库中的列设置为"整数",则当您尝试保存到数据库时,将获得零。 将列类型更改为 varchar 或文本或类似内容(取决于您使用的数据库(。 还要确保将字符串传递给 ajax 调用,而不是整数。 一种简单的方法.....

var myString = ""
myString = myString + variableIThinkMightBeAnInteger

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

例:

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

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

执行更新密码的查询时,请在$pwd两边加上单引号:

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

这应该强制值为字符串。对$subid也做同样的事情可能是值得的。

(另外,为什么不利用PHP双引号表示法?