从MySQL数据库中删除一条记录

时间:2012-01-28 15:21:33

标签: php mysql record

我正在尝试创建一个从数据库中获取记录的PHP脚本,提取工作正常,但问题是当我单击DELETE BUTTON时,它会删除数据库中的所有记录,我需要什么这里是删除一个特定的记录(仅在行上的记录),我该怎么做?

这是我的代码:

 <table width="99%" border="0">
        <tr>
          <td align="center">ID</td>
          <td align="center">Username</td>
          <td align="center">EDIT</td>
          <td align="center">DELETE</td>
        </tr>

          <? 
      while ($fetch=mysql_fetch_array($q))
{
    ?>          
        <tr>
          <td align="center"><? echo $fetch['useId']; ?></td>
          <td align="center"><? echo $fetch['userUserName']; ?></td>
          <td align="center"><? echo $fetch['useId']; ?></td>
          <td align="center"> <input name="delete" type="submit" value="DELETE " onclick="<? mysql_query("DELETE FROM user WHERE useId = ". $fetch['useId'] ."") ?> "/></td>
          </tr>
          <? } ?>

      </table>

2 个答案:

答案 0 :(得分:2)

在输出发送到浏览器之前/之后处理php,因此您在构建页面时删除所有记录。

简而言之,您需要做的是(这只是解决问题的一种方法......):

  • 为每个条目提供单独的表格
  • 为条目的ID添加隐藏字段
  • 在用户提交表单
  • 时将您的表单发布到另一个删除页面

答案 1 :(得分:1)

正如jeroen在评论中指出的那样,你正在混淆你的PHP和JS。您无法通过调用JS函数在页面上运行PHP,因为在显示页面之前解析了PHP。您需要做的是使用onClick事件将数据发布回页面,以便重新加载并调用代码来删除行:

<table width="99%" border="0">
  <tr>
    <td align="center">ID</td>
    <td align="center">Username</td>
    <td align="center">EDIT</td>
    <td align="center">DELETE</td>
  </tr>

  <? 
    if(isset($_POST['useId']) && is_numeric($_POST['useId']))
    {
       mysql_query("DELETE FROM user WHERE useId = ". $_POST['useId'] ."");
    }

    while ($fetch=mysql_fetch_array($q))
    {
  ?>  
  <form method="post" action="yourPHPScript.php"/>
    <tr>
      <td align="center"><? echo $fetch['useId']; ?></td>
      <td align="center"><? echo $fetch['userUserName']; ?></td>
      <td align="center"><? echo $fetch['useId']; ?></td>
      <input type="hidden" name="useId" value="<? echo $fetch['useId']; ?>"/>
      <td align="center"> <input name="delete" type="submit" value="DELETE "/></td>
    </tr>
  </form>
  <? } ?>

  </table>

我在此处所做的是修改您的代码,以便在页面加载时添加对POST变量useId的检查。一旦表单提交了页面,这将存在。 (我假设您正在使用method =&#34; POST&#34;在您的表单中,如果您正在使用GET,则相应地更新)。请注意,删除查询应该在您运行$ q查询之前运行,这样在页面刷新后您就不会在列表中看到已删除的人。

我还检查useId是否为数字(假设您的用户ID是数字)作为安全检查,以确保有人不会向您的查询发送虚假数据。最后,我将隐藏字段添加到包含用户ID的表单中。

编辑:忘记还要声明表中的每一行都需要是一个单独的表单才能正常工作,因为您只希望将该行的userID作为useID值发送。或者,您可以使用JS来确定要删除的行,并将userID作为GET var。

添加