0

我是数据库新手。我的问题是我想使用他/她的安全码更新用户密码。这里安全码将由用户在注册时输入。(任何地方/城市/朋友/叔叔等的名称)。我创建了名为details

FNAME
LNAME
PASS
BDAY
EMAIL
CODES(//users security code)

我有一个 php 文件可以检查这一点,但是 Secured.php 出了点问题:

<? $CODES = $_POST['CoDes'];
$PASS = $_POST['pass'];

mysql_connect('localhost','user','pass');
mysql_selectdb('userdb') or die(mysql_error());

$query = mysql_query(sprintf("UPDATE `details` SET PASS = '$PASS' WHERE CODES = '$CODES'"));   
mysql_real_escape_string($CODES) or die(mysql_error()); while($row = mysql_fetch_assoc($query))
{$rows[1] = $row;}
if(empty($rows[1][CODES]))
{ header("Location: http://localhost/Error.html"); }
else{
echo "Welcome,";
echo " your password has changed successfully to $PASS";
}
?>
<b>You can login</b><a href="http://localhost/login.html><em> here.</em></a><br> 
<img src="http://localhost/images/logo.gif">

此页面没有给我任何 php 错误,而是转到 /Error.html 即使用户安全代码存在于列 CODES 中,任何帮助都会非常感谢。

4

2 回答 2

2

UPDATE/INSERT/DELETE不提供结果集,因此您无法使用mysql_fetch_assoc.

SELECT查询只给出结果集。

你必须以这种方式检查

if($query) {
    // query executed successfully
} else {
    // query not executed successfully
}

或者

if(mysql_affected_rows() > 0) {
    // query executed successfully
} else {
    // query not executed successfully
}
于 2013-07-16T09:38:52.483 回答
0
$pass = some_type_of_security($_POST['pass']);

SELECT ... FROM ... WHERE codes=:codes AND user=:user

如果行数等于 1 则

UPDATE table SET pass=:pass WHERE user=:user

我推荐使用PDO来进行数据库操作

于 2013-07-16T09:57:40.473 回答