我正在尝试创建一个从数据库中获取记录的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>
答案 0 :(得分:2)
在输出发送到浏览器之前/之后处理php,因此您在构建页面时删除所有记录。
简而言之,您需要做的是(这只是解决问题的一种方法......):
答案 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。
添加