我正在尝试使用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] 删除。
我来说两句