-1

可能重复:
PHP/MySQL - SQL 语法错误?

我正在尝试使用以下脚本更新用户密码,但是我只是收到以下错误。我已经使用 PHP 和 MySQL 大约 2 个月了,所以我还是一个初学者,所以我非常感谢任何关于我下面的代码的评论。预先感谢您的帮助。

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '(password, salt) VALUES ('fcf829e6c3478752799b7d49798a14640f110dd4f8767' 附近使用正确的语法

<?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';";

我之所以这么说是因为它只返回一个值输入。那个或你的盐没有被发现。

编辑:上面是对的。您缺少 SET 命令。

于 2012-11-16T16:50:24.933 回答