Я пытаюсь выполнить SQL-запрос в PHP, используя форму HEREDOC. В то время как однострочная форма работает правильно, такая же вещь не работает в форме HEREDOC.
Это код HEREDOC, который я пытаюсь использовать:
$sql = <<<SQL
SELECT *
FROM `users`, `passwords`
WHERE users.User_id = passwords.User_id
AND {$formusername} = users.User_name
AND {$formpassword} = passwords.User_password
SQL;
Приведенный выше оператор возвращает 0 строк, когда я знаю, что значения, которые я предоставляю через мою форму, должны давать как минимум 1 строку. Кроме того, я знаю, что проблема в операторах AND, потому что удаление их приводит к строкам. Я подозреваю, что именно способ, которым я пишу переменные в операторе, вызывает проблему.
Синтаксис ниже работает правильно:
$sql = 'SELECT * FROM users, passwords WHERE users.User_id = passwords.User_id AND "'.$formusername.'" = users.User_name AND "'.$formpassword.'" = passwords.User_password';
1 строка корректно возвращается для значений, которые я предоставляю через форму HTML5.
Что не так с моим синтаксисом HEREDOC?
Редактировать: я знаю, что должен использовать подготовленные операторы, чтобы избежать внедрения SQL. Это лишь небольшой пример для класса, и мне нужна форма HEREDOC для работы.