我是数据库新手。我的问题是我想使用他/她的安全代码更新用户密码。这里的安全码将由用户在注册时输入。(任何地方/城市/朋友/叔叔等的名字)。我创建了一个名为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中任何帮助都会非常感谢。
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
}
$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进行数据库操作