如何在 HEREDOC SQL 查询中使用 PHP 变量?
How to use PHP variables in HEREDOC SQL query?
我正在尝试使用 HEREDOC 表单在 PHP 中执行 SQL 查询。虽然单行表格可以正常工作,但同样的事情在 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;
当我知道我通过表单提供的值应该至少产生 1 行时,上面的语句 returns 0 行。此外,我知道问题出在 AND 语句中,因为删除它们会产生行。我怀疑这是我在导致问题的语句中编写变量的方式。
以下语法可以正常工作:
$sql = 'SELECT * FROM users, passwords WHERE users.User_id = passwords.User_id AND "'.$formusername.'" = users.User_name AND "'.$formpassword.'" = passwords.User_password';
我通过 HTML5 表单提供的值正确返回了 1 行。
我的 HEREDOC 语法有什么问题?
编辑:我知道我应该使用准备好的语句来避免 SQL 注入。这只是 class 的一个小例子,我需要 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;
问题是变量中缺少引号 ("),
就像 {$formusername}
而不是 "{$formusername}"
。
希望能解决问题。
我正在尝试使用 HEREDOC 表单在 PHP 中执行 SQL 查询。虽然单行表格可以正常工作,但同样的事情在 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;
当我知道我通过表单提供的值应该至少产生 1 行时,上面的语句 returns 0 行。此外,我知道问题出在 AND 语句中,因为删除它们会产生行。我怀疑这是我在导致问题的语句中编写变量的方式。
以下语法可以正常工作:
$sql = 'SELECT * FROM users, passwords WHERE users.User_id = passwords.User_id AND "'.$formusername.'" = users.User_name AND "'.$formpassword.'" = passwords.User_password';
我通过 HTML5 表单提供的值正确返回了 1 行。
我的 HEREDOC 语法有什么问题?
编辑:我知道我应该使用准备好的语句来避免 SQL 注入。这只是 class 的一个小例子,我需要 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;
问题是变量中缺少引号 ("),
就像 {$formusername}
而不是 "{$formusername}"
。
希望能解决问题。