我在做一个校友录 我在做测试时 注册了几个账号 在权限上没有任何区别 当我以一个账号登陆时 我的留言板就会同一条的留言显示三遍 看起来是做循环是错了 可是用别的账号登陆就没错 这是为什么 请大家看我的留言板代码
  <%
Connection con=null;
Statement stm=null;
ResultSet rs2=null;
String userid=(String)session.getAttribute("user");   
String sql2="select Friends.fID,name,Msg,MsgTime,mID from Friends,UserInfo,Msg where Friends.ID=Msg.fID and Msg.fID='"+userid+"' and Msg.ID=UserInfo.ID" ;
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();//加入驱动
String url="jdbc:odbc:458";
con=DriverManager.getConnection(url,"sa","");
stm=con.createStatement();%>  <div id="msg">
    <h2 class="标题">留言板:</h2>
    <p>
    <%

rs2=stm.executeQuery(sql2);
int b;
    while(rs2.next())
{
String ffid=rs2.getString("fID");%>
<a href="friends.jsp?fid=<%=ffid%>" class='fname'><%=rs2.getString("name").trim()%>:</a><br/><br />
<span class='msg'><%=rs2.getString("Msg").trim()%></span><br><br>
    <span class='msgtime'><%=rs2.getString("MsgTime").trim()%></span><br><br>
<% b=rs2.getInt("mID");
 String s2=""+b;
%>
   
  <form method=post action="do_delete.jsp?mid=<%=s2%>" name="form" >  <input type="submit" name="del"  value="删除此留言">
  </form> <hr />
    <%}%>
    </p>
    </div> 
以后是catch和关数据库操作 
真解决不了了 大家给点意见吧 谢谢

解决方案 »

  1.   

    建议lz把代码贴全吧,while循环管到哪部分?没看到‘}’啊,问题可能处在循环上,或你的数据库中有重复记录,在检查检查!
      

  2.   


    忘了粘贴上去了 后面加个}就结束while循环了主要是用一个账号登陆游问题别的账号就没问题 这是怎么回事 还有数据库没问题的 
      

  3.   

    恩,遇到这种问题,第一个,你自己先去数据库中,确认数据没有重复:select Friends.fID,name,Msg,MsgTime,mID from Friends,UserInfo,Msg where Friends.ID=Msg.fID and Msg.fID=xxx  and Msg.ID=xxx因为你这个SQL是多表关联,所以很可能因为关联条件不完善造成查出多条数据。如果根据常规想法来猜测,可能要加上一个关联条件:
    and Friends.ID=UserInfo.ID这取决于你数据库表的关系。
      

  4.   

    select Friends.fID,name,Msg,MsgTime,mID from Friends,UserInfo,Msg where Friends.ID=Msg.fID and Msg.fID='"+userid+"' and Msg.ID=UserInfo.IDwhere 条件能对应唯一关系否则形成条件的笛卡尔序列,你就死定了!