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はデータベースに保存されませんつまり、整数として保存されていることを意味します。DBに保存する開始0を受け入れるように関数を変更する方法を教えてください。

 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 に保存されません

4

3 に答える 3

0

データベースの列を「整数」に設定している場合、データベースに保存しようとするとゼロが取得されます。列のタイプを varchar または text または類似のものに変更します (使用しているデータベースによって異なります)。また、整数ではなく文字列を ajax 呼び出しに渡すようにしてください。それを行う簡単な方法.....

var myString = ""
myString = myString + variableIThinkMightBeAnInteger
于 2012-08-31T10:13:11.830 に答える
0

パスワードを更新するためのクエリを実行するときは、一重引用符で囲みます$pwd

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

これにより、値が強制的に文字列になります。も同じことをする価値があるかもしれませ$subidん。

(また、PHP の二重引用符表記を利用してみませんか?)

于 2012-08-31T14:33:13.200 に答える
0

データベースの列を変更して、ゼロで埋めることができます。タイプをINTに、Length最大桁数を に、属性を に設定するだけ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 に答える