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

else 语句中的 SQL UPDATE 语法不正确,您使用的是 AND 而不是逗号

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

在旁注中,您还通过 $_GET 接受来自请求的数据,并且在针对数据库运行数据之前您没有清理该数据。

于 2012-04-15T17:10:17.440 回答
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 回答