我正在尝试制作一个从数据库中获取记录的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>发布于 2012-01-28 23:45:56
正如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="POST“,如果您使用GET,则相应地更新)。请注意,应该在返回$q查询之前真正运行删除查询,以便在页面刷新后不会在列表中看到已删除的人员。
我还检查useId是否为数字(假设您的用户is是数字)作为安全检查,以确保不会有人向您的查询发送虚假数据。最后,我将隐藏字段添加到包含用户ID的表单中。
编辑:忘了声明表中的每一行都需要是单独的表单,这样才能正常工作,因为您只希望将该行的userID作为useID值发送。或者,您可以使用JS来确定要删除的行,并将其作为GET变量添加到userID上。
发布于 2012-01-28 23:31:09
php是在输出发送到浏览器之前/同时进行处理的,所以在构建页面的过程中删除了所有记录。
简而言之,您需要做的是(这只是解决它的一种方法...):
时执行删除操作
https://stackoverflow.com/questions/9046352
复制相似问题