在jsp中使用搜索时出错
我正在开发一个jsp页面,用户可以通过使用一个搜索表单来浏览电影集合,该表单允许用户按类别、标题或发布日期进行搜索。如果没有任何搜索条件,则应显示所有电影。在jsp中使用搜索时出错,jsp,search,Jsp,Search,我正在开发一个jsp页面,用户可以通过使用一个搜索表单来浏览电影集合,该表单允许用户按类别、标题或发布日期进行搜索。如果没有任何搜索条件,则应显示所有电影。 我的问题是,只有*按发布年份搜索工作正常,但按标题搜索不起作用,只显示没有结果的内容*当我将标题搜索放在年份底部时,标题搜索工作正常,反之亦然 <% String s1 = request.getParameter("Ttl"); String s2 = request.getParamete
我的问题是,只有*按发布年份搜索工作正常,但按标题搜索不起作用,只显示没有结果的内容*当我将标题搜索放在年份底部时,标题搜索工作正常,反之亦然
<%
String s1 = request.getParameter("Ttl");
String s2 = request.getParameter("Yr");
out.println("<TABLE >");
out.println("<TR>");
out.println("<TH>Category</TH>");
out.println("<TH>Title</TH>");
out.println("<TH>Release Year</TH>");
out.println("<TH>Rental Price</TH>");
out.println(" <TH></TH>");
out.println("<TH></TH>");
out.println(" </TR>");
String sql = //search if no search condition
"SELECT *" +
" FROM users" +
" WHERE ";
if (s1!=null && !(s1.equals(""))){ //search by title
sql = sql +
"title LIKE '%" +
s1 + "%'";
}
if (s2!=null){ //search by year
sql = sql +
" year LIKE '%" +
s2 + "%'";
}
try{
Connection con =
DriverManager.getConnection("jdbc:odbc:UsersData");
System.out.println("got connection");
Statement s = con.createStatement();
ResultSet rs = s.executeQuery(sql);
while (rs.next()) {
out.println("<TR>");
String id = rs.getString(5);
out.println("<TD>" + rs.getString(1) + "</TD>");
out.println("<TD>" + rs.getString(2) + "</TD>");
out.println("<TD>" + rs.getString(3) + "</TD>");
out.println("<TD>" + rs.getString(4) + "</TD>");
out.println("<TD><A HREF=Add to shoping cart?id=" + id + ">Add to shoping cart</A></TD>");
out.println("</TR>");
}
s.close();
con.close();
}
catch (SQLException e) {
}
catch (Exception e) {
}
%>
您是否同时按年份和标题进行搜索?如果是这样,我在这两个条件子句之间看不到“AND”。您的SQL中需要一个条件,比如或
更重要的是,即使您必须在JSP中使用scriptlet,这也是一种糟糕的方法:HTML应该就是这样,HTML;在scriptlet中也绝对没有理由这样做。建议:打印SQL字符串,比较“工作”和“非工作”情况。Eeeew,scriptlet,甚至是表格内容?!糟糕。当我把标题放在今年底时,按标题搜索是有效的,反之,查询中也没有“或”。@AliDeV我不明白。如果你想进行条件查询,你的查询中应该有一个条件。你需要的是,AliDev应该有类似“…标题像“%xxx%”或年份像“%xxx%”,但你缺少关键字”或“…(这也是我在下面的回答中指出的)。(+1表示“不要使用脚本”“,顺便说一句,它也应该是一份事先准备好的声明。)