我的第一个页面<?php
    @session_start();
include_once('conn.php');
    $link=connectDB();
    $query="select * from notepad where name='".$_SESSION["name"]."'";
    $result=mysql_query($query) or die($query);
    if($result){
    echo   "<html>
        <head>
<title>留言列表</title>
            </head>
            <body>
            <form method=\"post\">
            <p align=\"left\"><font size=\"5\">我的留言列表</font></p>
            <table border=\"1\" width=\"320\" height=\"170\" align=\"centre\">
            <tr align=\"center\">
    <td>留言标题</td>
        <td>留言内容</td>
        <td>修改留言</td>
            <td>是否删除</td>";
    while($row=mysql_fetch_array($result)){
 $_SESSION['id']=$row[id];
 echo "<tr align=\"center\">";
 echo "<td>".$row[title]."</td>";
 echo "<td>".nl2br(htmlspecialchars($row[content]))."</td>";
         echo "<td><a href=\"edit_message.php?id=".$row[id]."\">编辑</a></td>";
 echo "<td><a href=\"delete_message.php?id=".$row[id]."\">删除</a></td>";
    }
echo"</tr></table>";
echo "<br/>";
    }else{
    echo "对不起,您没有留言!";
    }
    echo "<a href=\"afterlogin.php\">返回继续留言</a>";
?>
第二个删除页:
session_start();
  include_once('conn.php');
  $link=connectDB();
  $query="delete from notepad where id='".$_SESSION['id']."'";
  $result=mysql_query($query,$link) or die($query.mysql_error());
  if($result){
  echo "<script language=\"javascript\">
        alert(\"删除成功\");
window.location=\"message.php\"
</script>";
  }
我是根据留言信息的id来删除留言,为什么不能删除正确的行?以上代码删除的是留言的最后一条。
求教如何修改?

解决方案 »

  1.   

     $query="delete from notepad where id='".$_SESSION['id']."'";
    改成:
     $query="delete from notepad where id='".$_GET['id']."'";
      

  2.   

    这样写程序不可取,在删除的时候应该判断一下删除的用户,否则我写一个循环程序,循环调用delete_message.php?id={id},结果你的数据都被我删完了
      

  3.   

    在一个,".$_GET['id']." 在合并入SQL 语句的时候,应该这样写
    $id=$_GET[id]+0;$sql="....... id=$id";否则严重SQL注入漏洞,等着黑客攻入你的系统吧,看样子你应该注意的还很多呢
      

  4.   

    id传值过去,然后在表里,留言那个表加个id字段, where id = id ,这样就可以了、、
    我刚学php那会就是这样做的、完全能实现。
      

  5.   

    1.的确,这样删除不可取,最好在数据库中用用一个字段表示删除的标志,这样为以后查询删除的和不删除的留言很方便。
    2.SQL语句中的需要插入和更新到数据库中的值,最好先经过处理,不然,里面带有一个单引号和双引号会导致sql语句出错,这样就执行错误了。如$username = mysql_real_escape_string($username);当然还有其它处理函数,这样也更安全点。
    3.想知道自己的错误到哪儿了,可以mysql_query($sql) or die($sql);这样颜色sql语句有问题的话就会显示sql语句,你把语句复制丢到数据库中查询就知道了。
      

  6.   

             echo "<td><a href=\"edit_message.php?id=".$row[id]."\">编辑</a></td>";
             echo "<td><a href=\"delete_message.php?id=".$row[id]."\">删除</a></td>";
    这两句应该改成:         echo "<td><a href=\"edit_message.php?id=".$row['id']."\">编辑</a></td>";
             echo "<td><a href=\"delete_message.php?id=".$row['id']."\">删除</a></td>";