0

我搜索了解决方案,但没有任何效果。

<?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();
}

?>

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

谢谢,克里斯

4

1 回答 1

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

  2. 即使您输入if-block,您的删除查询也没有多大意义 - 应该AND '".$_POST['delete']."'怎么做?那部分似乎很无意义。

  3. 您尝试制作一个包含多个提交按钮的表单(每个用户一个)。在服务器端,当整个表单作为一大堆数据发送时,您无法确定按下了哪个提交按钮。您将需要每个用户一个表单或简单地使用链接(a-elements)来发送delete- 和 -username值(但请注意,在后一种情况下,您会做GET而不是POST-requests)

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

  5. 您的 delete-query 对sql-injections完全开放。请考虑使用准备好的语句或至少mysql_real_escape_sting避免这种情况。

这只是真正的问题点,它们会阻止您的代码完全工作或留下尴尬的安全漏洞。此外,有些事情是不必要的或某种混乱的(例如mysql_error每次调用而不是仅在查询失败时才这样做 - 但也许您只是为了调试而添加了它)。

总的来说,您似乎应该再次开始阅读一本好书或一些详细的教程,以刷新和扩展您对 php/mysql/html 的基本理解。

于 2012-05-06T08:13:36.637 回答