我有一个html页面,允许用户输入特定的搜索字词来查询我创建的数据库。我遇到的问题是,当我传递字符串以执行sql查询时,它不会将查询包装在单引号中,这是在sql数据库中搜索字符串匹配所必需的。这是我目前的代码:
//Create a statement for the sql queries
java.sql.Statement stmt = conn.createStatement();
//Get results from queries entered
String result_event_name = request.getParameter("event_name");
//Create query string
String sqlQuery_event = "SELECT event_name FROM event where event_name = " + "\'" + result_event_name + "\'";
//execute query
java.sql.ResultSet rs_event = stmt.executeQuery(sqlQuery_event);`
这是我得到的错误:
SQLException: ERROR: syntax error at end of input Position: 49
我尝试使用prepare语句 - 返回相同的错误
我试了一下没有转义的查询 - 返回相同的错误
我尝试没有单引号 - 返回相同的错误
答案 0 :(得分:0)
'
只需要一次LIKE '%\'%'
\
,您需要双重转义为LIKE '%\\\\%'
\'
,请点击'%\\\\\'%'
(有5个反斜杠)因为MySQL在字符串中使用C转义语法(例如,“\ n”到 代表一个换行符),你必须加倍你使用的任何“\” 在LIKE字符串中。例如,要搜索“\ n”,请将其指定为“\ n”。 要搜索“\”,请将其指定为“\”;这是因为反斜杠 解析器剥离一次,模式匹配时再次剥离 制作,留下一个反斜杠来匹配。
信用转到xchiltonx
mysql - How to handle query search with special characters /(forward slash) and \(backslash)