如何删除特定的mysql条目?

时间:2012-03-18 01:54:05

标签: php mysql delete-row corresponding-records

在我正在处理的项目中,用户有一个已存储在mysql数据库中的条目列表。在这里,我通过显示与其用户名匹配的所有条目来显示我用户所做的所有条目或ideas

我希望每个条目旁边都有一个删除按钮,在按下该条目时会删除 该条目。使用下面的代码,无论是否按下删除按钮,所有条目似乎都会被立即删除。

<?php
$username = $_SESSION['Username'];
$result = mysql_query("SELECT * FROM `ideas` WHERE Username = '$username' ORDER BY `ideaID`") or die(mysql_error());
$row = mysql_fetch_row($result);

while($row = mysql_fetch_array($result))
{ ?>

<?php $id_num = $row[0] ?>
<b>Title: </b> <?= $row[2]?><br><b>Description: </b> <?= $row[3]?> <br>
<a onclick ="<?php mysql_query("DELETE FROM `ideas` WHERE ideaId = '$id_num'");?>">
<div id="deleteButton">delete</div></a>
<br><br>


<?php } ?>

3 个答案:

答案 0 :(得分:1)

你误解了PHP的工作原理。一旦文件运行,所有PHP代码都将被执行,其中包括删除的mysql_query。如果你写<a onclick=或者你做什么,这是HTML,对PHP来说只是胡说八道并不重要。 PHP只是毫不费力地输出它。

您想要的是将链接替换为一个表单,该表单将您希望的ID提交到另一个PHP页面,然后执行删除MySQL查询。此链接也可以使用后台发生的AJAX请求进行。或者,您可以使用链接来完成相同的操作,但这被认为是不好的风格。

作为一个小练习来帮助您理解为什么这不起作用,请查看它生成的源代码。它只是一个空<a onclick="">。如果PHP按预期工作,那应该写什么?

答案 1 :(得分:1)

问题出在这一行:

              <?php mysql_query("DELETE FROM `ideas` WHERE ideaId = '$id_num'");

当它经历循环时,mysql_query对每个项执行DELETE查询,这就是它被删除的原因。你需要简单地生成一个指向delete.php的链接,并将记录id作为参数传递,然后使用mysql_query(“delete.php页面中的DELETE代码

答案 2 :(得分:0)

您必须使用AJAX或完整的回发从客户端向服务器发出单独的请求。