无法通过单击同一页面上的“删除”按钮从数据库中删除用户

时间:2012-05-06 08:08:29

标签: php mysql

我搜索了解决方案,但没有任何作用。

<?php

$result = mysql_query("SELECT username, EmailAddress FROM users", $connection);

echo "<form method='post'><table class='mecz' cellpadding='0' cellspacing='0' border='0'>
<tr>
<th>user names:</th>
<th>address e-mail</th>
<th></th>
</tr>";

while($row = mysql_fetch_array($result))
{
echo "<tr align='center'>";
echo "<td>" . $row['username'] . "</td>";
echo "<td>" . $row['EmailAddress'] . "</td>";
echo "<td><input class='delete' type='submit' name='delete' value='usuń' /></td>";
echo "</tr>";
}
echo "</table></form>";     

//这是我尝试从表单

传递删除操作时的一部分
?>
<?php

if (($_POST['username'] != "") && (isset($_POST['delete'])))  
{
$username = $_POST['username']; 
$query = "DELETE FROM users WHERE username = '".$username."' AND '".$_POST['delete']."'";
$result = mysql_query($query,$connection);
echo mysql_error();
}

?>

我认为解决方案不是很复杂,但我找不到,请帮忙。

谢谢, 克里斯

1 个答案:

答案 0 :(得分:3)

  1. 您没有在发布的代码中发送username,因此未设置$_POST['username'],因此不执行删除。

  2. 即使您输入if - 阻止,您的删除查询也没有多大意义 - AND '".$_POST['delete']."'应该做什么?那部分看起来很无知。

  3. 您尝试制作一个包含多个提交按钮的表单(每个用户一个)。在服务器端,你无法确定是否按下了提交按钮,因为整个表单作为一大堆数据被发送。您需要为每个用户创建一个表单,或者只使用链接(a - 元素)发送delete - 和username - 值(但请注意,在后一种情况下,您需要执行此操作GET代替POST - 请求)

  4. 您没有为表单指定action - 这可能会或可能不是您的问题,请参阅有关此问题的各种评论以获取更多信息。

  5. 您的删除查询对sql-injections完全开放。请考虑使用prepared statements或至少mysql_real_escape_sting来避免这种情况。

  6. 这只是真正有问题的一点,它们会阻止你的代码完全工作或者留下尴尬的安全漏洞。另外,有些东西只是不必要的或者某种混乱(比如每次调用mysql_error而不是仅在查询失败时才这样做 - 但是你可能只是为调试添加了它。)

    似乎你应该再次开始阅读一本好书或一些详细的tutoriala来刷新和扩展你对php / mysql / html的基本理解。