我正在尝试创建在线测验应用程序。我有一个问题表,问题和选项。要求是一次在UI中显示一个问题和ans,当用户点击下一个时,进入另一个。我有下面的代码,但当我把'i'时,选择查询不起作用。我试着把1只用于调试和工作。
<form name="myform">
<table>
<%
try
{
Class.forName("com.mysql.jdbc.Driver");
String localhost="jdbc:mysql://localhost:3306/pr1";
Connection connection=DriverManager.getConnection(localhost, "root", "root");
Statement st=connection.createStatement();
int i= 1;
ResultSet rs=st.executeQuery("select * from question where Qno=i");
while(rs.next())
{
%>
<tr><td> <%=rs.getString("question")%></td></tr>
<tr><td><br/></td></tr>
<tr><td style="padding: 10px;">A . <input type="radio" name="option" value="optionA"/><%=rs.getString("optionA")%></td></tr>
<tr><td style="padding: 10px;">B . <input type="radio" name="option" value="optionB"/><%=rs.getString("optionB")%></td></tr>
<tr><td style="padding: 10px;">C . <input type="radio" name="option" value="optionC"/><%=rs.getString("optionC")%></td></tr>
<tr><td style="padding: 10px;">D . <input type="radio" name="option" value="optionD"/><%=rs.getString("optionD")%></td></tr>
<tr><td><br/></td></tr>
<tr><td><input type="submit" name="next" value="Next"/>
<input type="submit" value="Previous"/>
<input type="submit" value="Test Summary"/></td></tr>
<%
}
%>
</table>
<%
if(request.getParameter("next")!=null)
{i++;
System.out.print(i);
}
rs.close();
st.close();
connection.close();
}
catch(Exception e)
{
e.printStackTrace();
}
%>
</form>
答案 0 :(得分:0)
Java不是php,它不会在包含sql命令的字符串中扩展变量scanf("%d",(int*)&b)
。
最简单的形式是使用字符串连接:
i
如果从用户那里获得任何参数,那么使用带参数的预准备语句来避免sql注入。