gpt4 book ai didi

php - MySQL 多个查询不起作用

转载 作者:行者123 更新时间:2023-11-29 23:38:56 25 4
gpt4 key购买 nike

问题已解决

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

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

有什么想法吗?我将提交我的代码,但出于安全原因等原因我将更改变量。此外,出于安全原因,大写的任何内容都已更改。对于每个单独的功能来说,代码都是正确的,因为正如我所说,如果我只更改电子邮件,它就会起作用并且实际上会发生变化。但是,如果我更改用户名和电子邮件,则只有用户名会更改,尽管电子邮件查询正在运行并且它回显电子邮件已更改!

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

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
}
}
}
}

感谢您的帮助!另外,不要对我的问题的结构等做出不机智的评论,因为我不在乎说实话。我只是希望这段代码能够诚实地工作,因为我已经研究它有一段时间了。这可能很简单,或者我可能使用了错误的方法来提交此类表单。

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

最佳答案

很难弄清楚,因为您没有生成真正的代码。

我认为你在这里错过了一些东西。当您使用 USER_NAME 作为 SQL 中的键时,请确保您在第二组 SQL 中使用更新后的用户名(以更新电子邮件),因为它们已被第一个 SQL 替换。

向其他人展示您的代码片段时不存在安全风险。仅隐藏用户名/密码或身份。 :)

关于php - MySQL 多个查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26277273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com