原始表格
<?php
echo '<td><form action="episodesdelete.php" method="POST">';
echo '<input type="hidden" name="epid" value="'.$row['epid'].'">';
?>
episodesdelete.php
<?php
$connection = mysql_connect("localhost","root","")
or die ("Couldn't Connect To Server");
$db = mysql_select_db("shows", $connection)
or die ("Couldn't Select Database");
$query = "DELETE FROM shows WHERE epid= "'.$_POST['epid']'";
$result = mysql_query($query)
or die ("Query Failed: " . mysql_error());
?>
答案 0 :(得分:4)
首先,您使用了双引号:
$query = 'DELETE FROM shows WHERE epid= ".$row['epid']"';
应该是:
$query = "DELETE FROM shows WHERE epid= ".$row['epid']";
还有一个问题:
您还需要使用具有正确字段名称的$_POST
数组,如:
$query = "DELETE FROM shows WHERE epid= " . $_POST['id'];
因为您使用POST
作为表单的方法:
<form action="episodesdelete.php" method="POST">
您需要使用$_POST
因为您的隐藏字段名为id
:
echo '<input type="hidden" name="id" value="'.$row['epid'].'">';
您需要在查询中指定:
$_POST['id']
以下是您的查询应该如何:
$query = "DELETE FROM shows WHERE epid= " . $_POST['id'];
答案 1 :(得分:1)
请在浏览器中查看生成的html页面的源代码。
在服务器上,检查表单是否已提交,而不仅仅是提取显示:
if (isset($_POST)) {
...
}
你写道:
$ query ='DELETE FROM显示WHERE epid =“。$ row ['epid']”';
这一行存在许多问题:
该行应如下所示:
$query = "DELETE FROM shows WHERE epid='"
.mysql_real_escape_string($_POST['id'])."'";
PS:说到安全性,请确保在将htmlspecialchars插入html页面之前使用CSRF转义不受信任的数据。并且您需要在表单中使用一个不可用的令牌来防止其他网站(登录用户可能访问)盲目地提交删除请求。请参阅{{3}}。