MySQL多个查询不起作用


MySQL multiple queries not working

问题已解决

我创建了一个表单,从管理员端处理用户信息的更改,例如管理员更改用户的用户名和/或电子邮件。我在处理多个查询时遇到问题。

例如,如果管理员更改了用户名,那么查询就会工作。如果管理员更改了电子邮件地址,则查询有效。但是,如果管理员通过表单同时更改用户名和电子邮件,那么只有用户名会更改。

有什么想法吗?我将提交我的代码,但出于安全原因等,我将更改变量。此外,出于安全原因,任何大写字母的内容都已更改。代码对于每个单独的函数都是正确的,因为正如我所说,如果我只更改电子邮件,它就会工作,而且实际上会更改。但是,如果我更改了用户名和电子邮件,尽管电子邮件查询正在运行,而且echo的电子邮件已经更改,但只有用户名会更改!

此外,值得注意的是,用户名字段和电子邮件字段等所有字段都是提交到一个页面的表单的一部分

if (isset($_POST['SUBMIT_BUTTON_PRESSED'])) {
//Gather all inputs from the form and sanitise it.
//REMOVED FOR SECURITY REASONS.
if($USERNAME_NEW != "") {
    if($USERNAME_NEW == $CURRENT_USERNAME) {
        echo "You have entered the username you are already using. Please enter a different username.";
    } else {
    $CHECK_USERNAME = "SELECT USERNAME_ROW FROM USERS_TABLE WHERE username='$USERNAME_NEW'";
    $RUN_QUERY = mysqli_query($CONNECTION INFO, $CHECK_USERNAME);
    $RESULT = mysqli_num_rows($RUN_QUERY);
    if($RESULT > 0) {
    echo "That username already exists. You cannot use that username again. Please enter another username.";    
    } else {
    $editing_username = true;
    $USERNAME = $NEW_USERNAME; //NOT NEEDED BUT IT STILL WORKS
    $THE_SQL_QUERY = "UPDATE USER_TABLE SET username='$USERNAME' WHERE username='$ORIGINAL USERNAME'";
    $RUN_THIS_QUERY= mysqli_query($CONNECTION INFO, $THE_SQL_QUERY);
    echo "The user's username has been changed to:  ". $USERNAME;
        }
    }
}
     if($EMAIL != "") {
        if($EMAIL == $CURRENT_EMAIL) {
            echo "You have entered the same email address to the one you are already using. Please enter a different email address.";
        } else {
            $CHECK_EMAIL = "SELECT USERS_EMAIL FROM USER_TABLE WHERE username='$USER'";
            $CHECK_EMAIL_QUERY = mysqli_query($CONNECTION_INFO, $CHECK_EMAIL);
            $RESULT = mysqli_num_rows($CHECK_EMAIL_QUERY);
            if($RESULT > 0) {
            echo "That email already exists. You cannot use that username again. Please enter another username.";   
            } else {
                $editing_email = true;
                $THE_NEW_EMAIL = $FINAL_EMAIL_THING; // AGAIN NOT NEEDED BUT STILL WORKS
                $THE_SQL= "UPDATE USER_TABLE SET USER_EMAIL='$EMAIL' WHERE username='$USER' LIMIT 1"; // REMOVED THE LIMIT 1, STILL DOESN'T WORK
                $RUN_THIS_QUERY = mysqli_query($CONNECTION, $THE_SQL);
                if($RUN_THIS_QUERY) {
                echo "The user's email has been changed."; // EVEN WHEN BOTH FIELDS ARE SUBMITTED THIS WORKS SO THE QUERY IS RUNNING BUT THE EMAIL DOESN'T CHANGE
                    }
                }
            }
        }

谢谢你的帮助!此外,不要对我的问题的结构等发表不诙谐的评论,因为我不在乎诚实。老实说,我只是希望这个代码能正常工作,因为我已经做了一段时间了。这可能很简单,或者我可能对这种类型的表单提交使用了错误的方法。

请记住:当我单独提交每个字段时,此代码确实有效!

这很难理解,因为您没有生成真正的代码。

我想你错过了什么。当您在SQL中使用USER_NAME作为密钥时,请确保您在第二组SQL中使用更新的用户名(用于更新电子邮件),因为它们已经被第一组SQL替换。

并且在向其他人显示代码片段时没有安全风险。仅隐藏用户名/密码或标识。:)