我可能没有使用最好的方法来创建用户系统,但它不需要花哨。我也知道我不是最有条理的
登录和一切正常,但我在更新凭据时遇到问题。
例如,我允许用户更改其用户名。我有“更改用户名”(非该名称)表单以提交给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());
}
}
这可能是我错过的愚蠢或简单,或者是非常巨大的东西。主要是因为我心不在焉。
答案 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起已弃用,将来会被删除。相反,应使用MySQLi或PDO_MySQL扩展名。
答案 3 :(得分:0)
所以,我猜我想通了。这是我的代码转到下一页的问题。
我显示的代码只打破了页面,无论是缺少整数还是其他东西。我不是百分百肯定。
感谢所有帮助人员,但现在我知道了这个问题。
编辑:
我忘记了echo
隐藏字段中的$user_id
。