PDO - Как обновить имя, где username=:user_id, значение привязки

Однако я пытаюсь выполнить этот запрос, но получаю сообщение об ошибке "Неустранимая ошибка: необработанное исключение" PDOException "с сообщением" SQLSTATE[42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; обратитесь к руководству " которая соответствует версии вашего сервера MySQL для правильного синтаксиса для использования рядом с ')' в строке 1 в /home/a7668955/public_html/uploadproc1.php:106 трассировки стека: #0 /home/a7668955/public_html/uploadproc1.php(106): PDOStatement->execute() #1 {main} добавляется в /home/a7668955/public_html/uploadproc1.php в строке 106"

я уверен, что это связано с тем, как я написал оператор SQL, я не уверен, как связать значения, когда user_id используется дважды?

 $sql1 = "UPDATE people SET firstname = (SELECT firstname FROM user WHERE username=:user_id) WHERE username=:user_id)";
                            $q = $conn->prepare($sql1) or die("failed!");
                            $q->bindParam(':user_id', $user_id, PDO::PARAM_STR);
                            $q->execute();

Спасибо за любую помощь! (Этот запрос был успешно выполнен с использованием старого mysql_*)

1 ответ

Решение

Попробуй это:

 $sql1 = "UPDATE people SET firstname = (SELECT firstname FROM user WHERE username=:user_id) WHERE username=:user_id";
                            $q = $conn->prepare($sql1) or die("failed!");
                            $q->bindParam(':user_id', $user_id, PDO::PARAM_STR);
                            $q->execute();

У вас есть дополнительный ) в конце, кто ничего не соответствует. Сообщение об ошибке было правильным.

Другие вопросы по тегам