使用PHP更新MySQL,表中的“用户名”的问题

时间:2013-12-31 08:58:08

标签: php mysql sql-update

我可能没有使用最好的方法来创建用户系统,但它不需要花哨。我也知道我不是最有条理的

登录和一切正常,但我在更新凭据时遇到问题。

例如,我允许用户更改其用户名。我有“更改用户名”(非该名称)表单以提交给update-username.php。

我已经在另一个页面的函数“cleanString”中有mysql_real_escape_string。我的textarea提交已经包含旧文本,因此您可以事先更改并查看。

$user_id = "";
if(isset($_POST['id']))
{
    $user_id = $_POST['id'];    
}

$query = "SELECT username,email,display_name,access,password FROM users WHERE user_id='$user_id'";
$results = mysql_query($query);

if(!$results) { //Check to see if query failed
die(mysql_error());
}

$resultsfetch=mysql_fetch_array($results);
$username = $resultsfetch['username'];
$usernamenew = $_POST['usernameinput'];
if(isset($_POST['usernameinput'])) {
    $usernamenew = cleanString($_POST['usernameinput']);
}

if($usernamenew !=$username){
    $submit = "UPDATE users SET username = '$usernamenew' WHERE user_id = '$user_id'";
    mysql_query($submit);
    if(!$submit) { //Check to see if query failed
        die(mysql_error());
    }
}

这可能是我错过的愚蠢或简单,或者是非常巨大的东西。主要是因为我心不在焉。

4 个答案:

答案 0 :(得分:0)

$submit = sprintf("UPDATE users SET username = '%s' WHERE user_id = %d",mysql_real_escape_string($usernamenew),mysql_real_escape_string($user_id));

答案 1 :(得分:0)

如果页面已加载,$user_id将为NULL,因此会更新注释!通过发送$_POST['id']确保加载此页面。如果这些都是正确的,请检查一下。

“数据库用户是否拥有更新表的权限?”

答案 2 :(得分:0)

我已经重新安排了您的代码。添加评论我改变了。试试这个

if (isset($_POST['id'], $_POST['usernameinput'])) { // Check if both POST id and usernameinput is available
    $user_id = (int)$_POST['id']; //assuming this is an integer

    $query = "SELECT username,email,display_name,access,password FROM users WHERE user_id='$user_id'";
    $results = mysql_query($query);

    if (!$results) {//Check to see if query failed
        die(mysql_error());
    }
    if (mysql_num_rows($result) > 0) { //verify if there is really a user with such id
        $resultsfetch = mysql_fetch_array($results);
        $username = $resultsfetch['username'];
        $usernamenew = cleanString($_POST['usernameinput']);

        if ($usernamenew != $username) {
            $submit = "UPDATE users SET username = '$usernamenew' WHERE user_id = '$user_id'";
            if (!mysql_query($submit)) {//Check to see if query failed
                die(mysql_error());
            }
        }

    }else{
        die("no such user with userid=$user_id");
    }
}

警告: mysql_函数自PHP 5.5.0起已弃用,将来会被删除。相反,应使用MySQLiPDO_MySQL扩展名。

答案 3 :(得分:0)

所以,我猜我想通了。这是我的代码转到下一页的问题。

我显示的代码只打破了页面,无论是缺少整数还是其他东西。我不是百分百肯定。

感谢所有帮助人员,但现在我知道了这个问题。

编辑: 我忘记了echo隐藏字段中的$user_id