我搜索了解决方案,但没有任何作用。
<?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();
}
?>
我认为解决方案不是很复杂,但我找不到,请帮忙。
谢谢, 克里斯
答案 0 :(得分:3)
您没有在发布的代码中发送username
,因此未设置$_POST['username']
,因此不执行删除。
即使您输入if
- 阻止,您的删除查询也没有多大意义 - AND '".$_POST['delete']."'
应该做什么?那部分看起来很无知。
您尝试制作一个包含多个提交按钮的表单(每个用户一个)。在服务器端,你无法确定是否按下了提交按钮,因为整个表单作为一大堆数据被发送。您需要为每个用户创建一个表单,或者只使用链接(a
- 元素)发送delete
- 和username
- 值(但请注意,在后一种情况下,您需要执行此操作GET
代替POST
- 请求)
您没有为表单指定action
- 这可能会或可能不是您的问题,请参阅有关此问题的各种评论以获取更多信息。
您的删除查询对sql-injections完全开放。请考虑使用prepared statements或至少mysql_real_escape_sting
来避免这种情况。
这只是真正有问题的一点,它们会阻止你的代码完全工作或者留下尴尬的安全漏洞。另外,有些东西只是不必要的或者某种混乱(比如每次调用mysql_error
而不是仅在查询失败时才这样做 - 但是你可能只是为调试添加了它。)
似乎你应该再次开始阅读一本好书或一些详细的tutoriala来刷新和扩展你对php / mysql / html的基本理解。