【发布时间】:2015-11-20 23:14:10
【问题描述】:
我正在尝试将电子邮件作为参数传递给我的 JAVA 后端中的 SELECT SQL 查询。 据我了解,由于某种原因,它仅从“email_name@email.com”传递“email_name”。 (收到此错误):
Threw a SQLException creating the list of blogs.
ERROR: column "email_name" does not exist
Position: 174
存在一个包含“email_name@email.com”的行。 (为什么是“ERROR: column”?根据查询它应该寻找一个值,不是吗?)
这是我的查询:
String active_user = "email_name@email.com"; //email_name@email.com - example, active_user receive some path variable and on this particular moment(before query execution) contains exactly "email_name@email.com".
ResultSet rs = st.executeQuery("SELECT \n" +
" goods.item_title, \n" +
" goods.item_descr, \n" +
" goods.item_email,\n" +
" goods.item_images,\n" +
" goods.item_phone, \n" +
" goods.item_price \n" +
"FROM \n" +
" public.goods\n" +
"WHERE goods.owner = "+active_user+"\n" +
"ORDER BY\n" +
" goods.item_id ASC;");
所以问题是 - 如何将完整的电子邮件传递给查询?
【问题讨论】:
-
您应该查看
PreparedStatement而不是执行原始 SQL。这可能导致 SQL 注入。它还将解决您的问题(因为您错过了active_user周围的引号)。 -
哇哇哇哇哇。检测到 SQL 注入。您的电子邮件
bobby@tables.com');DROP TABLE goods;--的用户刚刚使您的系统崩溃。见bobby-tables.com 和en.wikipedia.org/wiki/SQL_injection
标签: java postgresql