@T_verdisla_V
Начинающий

Что это за ошибка и как ее устранить?

Здравствуйте, у меня есть такой запрос
try{    
        $stmt = $pdo -> prepare("UPDATE users SET");
        if($newPassword){
            $stmt .= "`password` = :newPassword, ";
        }
        $stmt .= "`name` = :name,
                  `sec_name` = :sec_name,
                  `surname` = :surname,
                  `adress` = :adress,
                  `tel` = :tel 
            WHERE `email` = :email AND `password` = :password limit 1";   
        $salt = getSalt($email);
        if (!$salt) {
            return false;
        } 
        $curPasswordMD5 = passwordHash($curPassword, $salt);
        $stmt->execute(
                 array( ":name" => $name,
                        ":sec_name" => $sec_name,
                        ":surname" => $surname,
                        ":adress" => $adress,
                        ":tel" => $tel,
                        ":newPassword" => $newPassword['hash'],
                        ":email" => $email,
                        ":password" => $curPasswordMD5['hash'],
                       )                      
                ); 
        return $stmt;
        } catch (Exception $e) {
            exit($e->getMessage());
        }

и выдает он мне следующую ошибку
Catchable fatal error: Object of class PDOStatement could not be converted to string in C
:\xampp\htdocs\myshop.local\models\UsersModel.php
on line 236
в данном случае это строка где заканчивается сам запрос т.е. строка с WHERE... Что тут не правильно понять не могу.
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
@feldwebel
Как-то ты смело к PDOStatement строки конкатенируешь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
gromdron
@gromdron
Работаю с Bitrix24
Вы бы var_dump($stmt) сделали бы и посмотрели, что мешаете теплое с мягким

$sql = "UPDATE users SET ":

if($newPassword){
    $sql .= "`password` = :newPassword, ";
}
$sql .= "`name` = :name,
          `sec_name` = :sec_name,
          `surname` = :surname,
          `adress` = :adress,
          `tel` = :tel 
    WHERE `email` = :email AND `password` = :password limit 1";   
$salt = getSalt($email);
if (!$salt) {
    return false;
} 
$curPasswordMD5 = passwordHash($curPassword, $salt);
$stmt = $pdo -> prepare($sql);
$stmt->execute(
         array( ":name" => $name,
                ":sec_name" => $sec_name,
                ":surname" => $surname,
                ":adress" => $adress,
                ":tel" => $tel,
                ":newPassword" => $newPassword['hash'],
                ":email" => $email,
                ":password" => $curPasswordMD5['hash'],
               )                      
        ); 
return $stmt;
} catch (Exception $e) {
    exit($e->getMessage());
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы