Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jsp中使用搜索时出错_Jsp_Search - Fatal编程技术网

在jsp中使用搜索时出错

在jsp中使用搜索时出错,jsp,search,Jsp,Search,我正在开发一个jsp页面,用户可以通过使用一个搜索表单来浏览电影集合,该表单允许用户按类别、标题或发布日期进行搜索。如果没有任何搜索条件,则应显示所有电影。 我的问题是,只有*按发布年份搜索工作正常,但按标题搜索不起作用,只显示没有结果的内容*当我将标题搜索放在年份底部时,标题搜索工作正常,反之亦然 <% String s1 = request.getParameter("Ttl"); String s2 = request.getParamete

我正在开发一个jsp页面,用户可以通过使用一个搜索表单来浏览电影集合,该表单允许用户按类别、标题或发布日期进行搜索。如果没有任何搜索条件,则应显示所有电影。
我的问题是,只有*按发布年份搜索工作正常,但按标题搜索不起作用,只显示没有结果的内容*当我将标题搜索放在年份底部时,标题搜索工作正常,反之亦然

 <% 

         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表示“不要使用脚本”“,顺便说一句,它也应该是一份事先准备好的声明。)