首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从MySQL数据库中删除一条记录

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

Stack Overflow用户
提问于 2012-01-28 23:21:33
回答 2查看 10K关注 0票数 0

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

下面是我的代码:

代码语言:javascript
运行
复制
 <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-28 23:45:56

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

代码语言:javascript
运行
复制
<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="POST“,如果您使用GET,则相应地更新)。请注意,应该在返回$q查询之前真正运行删除查询,以便在页面刷新后不会在列表中看到已删除的人员。

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

编辑:忘了声明表中的每一行都需要是单独的表单,这样才能正常工作,因为您只希望将该行的userID作为useID值发送。或者,您可以使用JS来确定要删除的行,并将其作为GET变量添加到userID上。

票数 1
EN

Stack Overflow用户

发布于 2012-01-28 23:31:09

php是在输出发送到浏览器之前/同时进行处理的,所以在构建页面的过程中删除了所有记录。

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

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

时执行删除操作

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9046352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档