You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL校验字段非空后更新表时修改用户名功能不生效如何解决

问题根因

  • 逻辑嵌套错误:你将更新用户名的代码放在了「查询到用户名已存在」的分支内部,当新用户名未被占用时,查询返回的行数为0,不会进入该分支,自然无法执行更新操作
  • 分支判断顺序错误:if ($checkUsername === $newUsername)成立时直接输出已占用,后续的elseif没有正确对应「用户名不存在」的场景
  • 存在安全隐患:UPDATE语句直接拼接用户输入的$newUsername,有SQL注入风险
  • 绑定参数类型错误:用户ID通常为整型,使用字符串类型s绑定可能出现隐式转换异常

修正后的代码

change.php 调整后代码

session_start(); // 如果你此前未开启会话,需要先加这行代码
$newUsername = $_POST['changeUsername'];
$newNom = $_POST['changeNom'];

$currentId = $_SESSION['id'];
$currentName = $_SESSION['name'];

// 修改后的用户名更新逻辑
if(empty($newUsername)){
    echo "username is empty";   
}else if ($stmt = $con->prepare('SELECT username from users where USERNAME = ? ')) {
    $stmt->bind_param('s', $newUsername);
    $stmt->execute();
    $stmt->store_result();
    if ($stmt->num_rows > 0) {
        // 用户名已存在
        echo "username deja utiliser";
    } else {
        // 用户名未占用,执行更新,用参数绑定避免注入
        if($stmt = $con->prepare("UPDATE users SET USERNAME = ? WHERE ID = ? ")){
            $stmt->bind_param('si', $newUsername, $currentId); // ID用整型i绑定
            $stmt->execute();
            echo "les valeur on été modifier";
            session_regenerate_id();
            $_SESSION['name'] = $newUsername;
        }else{
            echo "les valeurs n'ont pas été modifier";
        }
    }
    $stmt->close(); // 用完关闭statement,避免资源占用
}

// 姓氏修改逻辑也建议改成参数绑定,避免注入
if(empty($newNom)){
    echo "nom is empty";
}else if($stmt = $con->prepare("UPDATE users SET NOM = ? WHERE ID = ? ")){
    $stmt->bind_param('si', $newNom, $currentId);
    $stmt->execute();
    echo "les valeur on été modifier";
    $stmt->close();
}else{
    echo "les valeurs n'ont pas été modifier";
}

调整说明

  1. 将更新逻辑从「用户名已存在」的分支移到了对应的else分支,只有查询不到匹配的用户名时才执行更新
  2. UPDATE语句全部改用参数绑定,杜绝SQL注入风险
  3. 修正了ID参数的绑定类型为整型i
  4. 新增了statement资源关闭的逻辑,避免不必要的资源占用

内容的提问来源于stack exchange,提问作者Jermey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:36:01