尝试更改用户名时,MySQL查询失败

P22

我的数据库中有一些用户,我可以编辑他们的名称和密码,但是当我尝试编辑用户名时,查询将失败。

这是我的代码

    $user->username = $db->mysql_prep($_POST["username"]);
    $user->hashed_password = ($_POST["password"]);
    $user->firstname = $db->mysql_prep($_POST["firstname"]);
    $user->lastname = $db->mysql_prep($_POST["lastname"]);

    $user_query = $user->find_user_by_username($user->username);
    $user->id = $user_query["id"];

    $result = $user->change_user_by_id($user);
    //->id,$user->username,$user->hashed_password,$user->firstname,$user->lastname

    unset($user);

我的change_user_by_id方法:

public function change_user_by_id($user){
        global $db; 
        global $session;

        $query  = "UPDATE users SET ";
        $query .= "username = '{$user->username}', ";
        $query .= "first_name = '{$user->firstname}', ";
        $query .= "last_name = '{$user->lastname}' ";
        $query .= "WHERE id = {$user->id} ";
        $query .= "LIMIT 1";

        $result = mysqli_query($db->connection, $query);

        $db->confirm_query($result);

        if ($result && mysqli_affected_rows($db->connection) == 1) {
              // Success
            $session->message("User updated.");
            redirect_to("list.php");
        } else {
              // Failure
            $session->message("User update failed.");
        }
    }

和我的find_user_by_username方法:

public static function find_user_by_username($username="default"){
        global $db; 

        $query  = "SELECT * ";
        $query .= "FROM users ";
        $query .= "WHERE username = '{$username}' ";
        $query .= "LIMIT 1";

        $user_set = mysqli_query($db->connection, $query);
        $db->confirm_query($user_set);

        if($user = mysqli_fetch_assoc($user_set)) {
            return $user;
        } else {
            return null;
        }   
    }

编辑:

我得到的唯一错误是来自confirm_query函数,我得到了消息“数据库查询失败”,这是该函数:

public function confirm_query($result_set) {

    if (!$result_set) { 
      die("Database query failed."); 
    } 

} 

编辑2:

添加了错误消息,这就是我得到的:

您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以在第1行的“ LIMIT 1”附近使用

P22

我发现这是由使用用户名获取ID引起的,这意味着更改用户名意味着无法检索到ID。因此,我更改了代码,并在表单中为id添加了一个隐藏字段。

旧代码:

$user->username = $db->mysql_prep($_POST["username"]);
$user->hashed_password = ($_POST["password"]);
$user->firstname = $db->mysql_prep($_POST["firstname"]);
$user->lastname = $db->mysql_prep($_POST["lastname"]);

$user_query = $user->find_user_by_username($user->username);
$user->id = $user_query["id"];

$result = $user->change_user_by_id($user);

unset($user);

替换为新代码:

$user->username = $db->mysql_prep($_POST["username"]);
$user->hashed_password = ($_POST["password"]);
$user->first_name = $db->mysql_prep($_POST["first_name"]);
$user->last_name = $db->mysql_prep($_POST["last_name"]);
$user->id = $db->mysql_prep($_POST["id"]);

$result = $user->change_user_by_id($user);

unset($user);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更改用户详细信息时,UNIQUE约束失败的用户名错误

来自分类Dev

在MYSQL中更改用户名和密码

来自分类Dev

尝试更改用户名时,终端会告诉我该进程当前正在使用该用户

来自分类Dev

无法更改用户名

来自分类Dev

如何更改用户名

来自分类Dev

更改用户名而不登录

来自分类Dev

在Ubuntu中更改用户名

来自分类Dev

如何更改用户名域

来自分类Dev

用户在Oauth2中更改用户名时应该怎么办

来自分类Dev

更改用户参数以包括其用户名

来自分类Dev

尝试获取用户供稿时,社交框架返回“(#803)无法通过用户名(用户名)查询用户”

来自分类Dev

无法从git更改用户名和密码

来自分类Dev

在Mac上的终端中更改用户名颜色

来自分类Dev

如何在Cygwin上更改用户名

来自分类Dev

如何在Windows 7中更改用户名?

来自分类Dev

更改用户名表格不起作用

来自分类Dev

如何更改用户名并更新会话?

来自分类Dev

呼叫子更改用户名颜色

来自分类Dev

您如何在Manjaro中更改用户名?

来自分类Dev

如何在MediaWiki中更改用户名?

来自分类Dev

如何在 Konsole 中更改用户名颜色

来自分类Dev

如何在 Ubuntu 18.04 中更改用户名?

来自分类Dev

更改用户名后,新的用户名不会显示在登录窗口中

来自分类Dev

Django表单:在不更改用户名的情况下更新用户的属性

来自分类Dev

Django Rest Framework 如何禁止用户更改用户名?

来自分类Dev

Swift & Parse - 正在尝试通过查询检索用户名。

来自分类Dev

更改用户名而不更改旧的存储库地址?

来自分类Dev

如何安全地更改用户名和主机名?

来自分类Dev

如何安全地更改用户名和主机名?

Related 相关文章

热门标签

归档