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 に答える