更新密码时出现SQL语法错误

时间:2012-11-16 16:35:40

标签: php mysql

  

可能重复:
  PHP/MySQL - SQL syntax error?

我正在尝试使用以下脚本更新用户密码,但是我只是收到以下错误。我现在只使用PHP和MySQL大约2个月,所以我仍然是初学者,所以我非常感谢有关我的下面代码的任何评论。提前感谢您的帮助。

  

您的SQL语法有错误;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   '(密码,盐)VALUES附近(   第1行'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');

?>

2 个答案:

答案 0 :(得分:3)

不,它应该是

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

请注意,您的查询容易被SQL Injection攻击,请参阅下面的文章

答案 1 :(得分:-1)

在我看来,输入密码在输入之前和之后都添加了。翻译你正在进入数据库:

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

我说这是因为它只返回一个值输入。那或你的盐没有找到。

编辑:上面说得对。你错过了SET命令。