-1

重複の可能性:
PHP/MySQL - SQL 構文エラー?

以下のスクリプトを使用してユーザー パスワードを更新しようとしていますが、次のエラーが表示されます。私はPHPとMySQLを約2か月しか使用していないので、まだ初心者なので、以下のコードに関するコメントをいただければ幸いです. よろしくお願いいたします。

SQL 構文にエラーがあります。使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

<?php

//Pull in form info

$pass1 = $_POST['pass1'];
$pass2 = $_POST['pass2'];

//Chrck if the 2 password fields match
if($pass1 != $pass2) {
    header('Location: ../admin/pass-change.php?pw=notmatched');
    die();
}

//encrypts the password

$hash = hash('sha256', $pass1);

//creates a 3 character sequence

function createSalt()
{
    $string = md5(uniqid(rand(), true));
    return substr($string, 0, 3);
}
$salt = createSalt();
$hash = hash('sha256', $salt . $hash);

//initialise connection with databse

require_once('../Connections/EliteGrooming.php');

mysql_select_db($database_EliteGrooming, $EliteGrooming);

//Execute the query

$username = $_SESSION['username'];

$query = "UPDATE admin_users (password, salt)
        VALUES ( '$hash', '$salt' )
        WHERE username = '$username';";
mysql_query($query) or die(mysql_error());;
mysql_close();
header('Location: ../admin/pass-change.php?PassChanged');

?>
4

2 に答える 2

3

いいえ、そうする必要があります

UPDATE admin_users 
   SET password = '$hash', 
        salt = '$salt' 
WHERE username = '$username'

注意してください、あなたのクエリは脆弱です、SQL Injection以下の記事をお願いします

于 2012-11-16T16:36:53.340 に答える
-1

入力パスワードが入力の前後に何とか追加されているように私には見えます。あなたがデータベースに入れている翻訳:

 $query = "UPDATE admin_users (password, salt)
    VALUES ( ''f124782349023589270365fhjdhf2893'', '$salt' )
    WHERE username = '$username';";

私がこれを言う理由は、1つの値の入力しか返さないためです。それかあなたの塩が見つかりません。

編集:上記は正しいです。SETコマンドがありません。

于 2012-11-16T16:50:24.933 に答える