0

データベースに入り、情報の行を更新するphpスクリプトへのajax呼び出しがあります。変更したい提供情報を使用してブラウザにリンクを入力すると、問題なく正常に機能します。私はこれと同じ方法でいくつかのajax呼び出しを設定しましたが、それらはすべて問題なく機能します。このphpスクリプトへのajax呼び出しが何もできない理由を理解できません。

javascript呼び出し:

function updateInfo(userID, email, username, password){
    var validGT;
    var xmlHttp = new XMLHttpRequest();
    xmlHttp.onreadystatechange=function()
    {
        if(xmlHttp.readyState==4){
            if (xmlHttp.status == 200){
                validGT = xmlHttp.responseText;
                    if(validGT == "Success!"){
                        var error = document.getElementById("update-error-message");
                        error.innerHTML = "Updated!";
                    }else{
                        var error = document.getElementById("update-error-message");
                        error.style.color = "Red";
                        error.innerHTML = "error occured";
                    }
            }
        }
    }
    xmlHttp.open("GET", "updateInfo.php?userID=" + userID + "&email=" + email + "&gamertag=" + gamertag + "&password=" + password, true);
    xmlHttp.send();
}

phpスクリプト:

****connect to database and such****
$userID = $_GET{"userID"};
$email = $_GET{"email"};
$username = $_GET{"username"};
$password = $_GET{"password"};

if($password != "null"){
    mysql_query("UPDATE users SET email='$email', username='$username', password='$password' WHERE uid='$userID'") or die(mysql_error());
    echo "Success!";
}else{
    mysql_query("UPDATE users SET email='$email' AND username='$username' WHERE uid='$userID'") or die(mysql_error());
    echo "Success!";
}

mysql_close($con);

「成功!」というajax呼び出しから応答が返ってきます。ただし、実際にはデータベース内の情報には何もしません。私はfirebugを使用して、情報が正しく渡されていることを確認しました。だから私はここで途方に暮れています。何が起こってる?誰かアイデアがありますか?

4

2 に答える 2

1

これは奇妙に見えます

$userID = $_GET["userID"];
$email = $_GET["email"];
$username = $_GET["username"];
$password = $_GET["password"];

それでも問題が解決しない場合は、クエリをデバッグ/エコーして、何が起こっているかを確認してください

また変更します

mysql_query("UPDATE users SET email='$email' AND username='$username' WHERE uid='$userID'") or die(mysql_error());

mysql_query("UPDATE users SET email='$email', username='$username' WHERE uid='$userID'") or die(mysql_error());

ただし、SQLエラーが発生したことがないため、パスワードは常に「null」のようです。

于 2012-04-15T17:07:43.787 に答える
1

elseステートメントのSQLUPDATE構文が正しくありません。コンマの代わりに、ANDを使用しています。

"UPDATE users SET email='$email', username='$username' WHERE uid='$userID'"

ちなみに、$ _ GETを介してリクエストからのデータも受け入れており、データベースに対して実行する前にそのデータをサニタイズしていません。

于 2012-04-15T17:10:17.440 に答える