如何在HEREDOC SQL查询中使用PHP变量?

文森特

我正在尝试使用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行时,以上语句返回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注入。这只是课堂上的一个小例子,我需要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}"。希望可以解决此问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章