1

在我正在处理的项目中,用户有一个已创建的条目列表,这些条目存储在 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 } ?>
4

3 回答 3

1

您误解了 PHP 的工作原理。一旦你的文件运行,所有的 PHP 代码都会被执行,这包括你mysql_query的删除。不管你是写<a onclick=还是做什么都没关系,那是 HTML,对 PHP 来说只是胡说八道。PHP 直接输出就行了。

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

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

于 2012-03-18T01:57:32.517 回答
1

问题出在这一行:

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

当它通过循环时,mysql_query 对每个项目执行 DELETE 查询,这就是它被删除的原因。您只需生成一个指向 delete.php 的链接并将记录 id 作为参数传递,然后在 delete.php 页面中有 mysql_query("DELETE code

于 2012-03-18T01:58:44.670 回答
0

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

于 2012-03-18T01:56:12.533 回答