Update MYSQL не функционирует правильно

У меня есть этот код:

<?php
session_start();
if (!isset($_SESSION['user'])){ header("Location: index.php");}
include("db_files/db.php");
include("inc/functions.php");
$oldpass = mysqli_real_escape_string($db, $_POST['oldpass']);
$oldcrypt = encripta_password(mysqli_real_escape_string ($db, $oldpass));

$newpass = encripta_password(mysqli_real_escape_string($db, $_POST['newpass']));
$renewpass = encripta_password(mysqli_real_escape_string($db, $_POST['renewpass']));

$usermail = mysqli_real_escape_string($db, $_SESSION['user']);

$strSQL = "SELECT password FROM usuarios WHERE email = '".$usermail."'";
$query = mysqli_query($db, $strSQL);
$result = mysqli_fetch_array ($query);
if ($result['password'] == $oldcrypt){
	if ($newpass == $renewpass){
		$strSQL = "UPDATE usuarios SET usuarios.password = '".$newpass."' WHERE usuarios.email = '".$usermail."'";
		$query = mysqli_query($db, $strSQL);
		if ($db->query($query) === TRUE) {
			echo "Updated";
		}else{
			echo "Not updated". $db->error."<br>";
		}
	}
}else{
	echo "No match password";
}
// $pass = encripta_password("asdasd");
// echo $pass;
?>

И выполнив это, он дает мне эту ошибку:

Not updatedYou have an ошибка in your SQL syntax; check the учебник that corresponds to your MariaDB server версия for the right syntax to использовал near '1' at line 1

Этот же самый update в phpmyadmin функционирует правильно (заменяя переменные на Вашу стоимость)

Я добавляю, что, если, который делает update, но я не знаю, откуда приходит эта ошибка.

Это функция encripta_password:

 function encripta_password($password)
{
    //$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
    $saltedPW =  $password . PANDAERP_HASH;
    $hashedPW = hash('sha256', $saltedPW);
    return $hashedPW;
}
define("PANDAERP_HASH", "16a507d6f3da37d8ba00b28bf622d144cba96f65d3a18f8b15911697d6409f0f");
1
задан 03.05.2017, 19:37
1 ответ

Твоя ошибка, - в котором ты пробуешь выполнять query два раза, я объясняю тебе в комментариях:

        //esto ejecuta el query una vez y devuelve 1 (éxito)            
        $query = mysqli_query($db, $strSQL);
        //esto intenta ejecutar el 1 como query nuevamente.
        if ($db->query($query) === TRUE) {

Оставь только первого, или измени второго перемещая его цепь, которая содержит твое решение SQL.

6
ответ дан 24.11.2019, 12:44
  • 1
    Действительно, это было этим, я заменил $query if на $strSQL и сейчас он не дает ning и # 250; n ошибка. – Pavlo B. 04.11.2016, 17:52