$html="";
$sql="SELECT * FROM tiger;";
$rs=mysql_query($sql);
while($row=mysql_fetch_array($rs)){
$html.=
'<tr><td align="left"><img src="'.$row['image'].'" width="200" height="150" /></td>
<td align="center" style="font:bold">'.$row['name'].' </td>
<td align="center"><input type="submit" name="Submit" value="Delete" />
<input name="id" type="hidden" value="'.$row['id'].'" /> </td>
</tr>'
;
}
if($_REQUEST['Submit']){
$sql1="delete image from tiger where id='".$_REQUEST['id']."'";
$query=mysql_query($sql1);
}
现在这个$ html随后得到了回应。所以在输出中获得第一个图像,然后是图像的名称,然后是一个按钮。现在我想要的是我点击删除按钮从数据库中删除相应的行。这在上面的代码中没有发生,因为它无法获取相应的id。所以请帮助我怎么做?
答案 0 :(得分:2)
您是否在此表中添加了表单元素?我将$_REQUEST
替换为$_POST
,尽量避免使用$_GET
。知道您的删除URL的恶意用户可能会欺骗您点击链接(例如tinyurl),这会打开另一组链接:删除所有记录的页面。试试这个:
$html="";
$sql="SELECT * FROM tiger;";
$rs=mysql_query($sql);
if(!$rs){
echo 'Query failed...';
// and log the error, mysql_error()
}
while($row=mysql_fetch_array($rs)){
$html .=
'<tr><td align="left"><img src="'.urlencode($row['image']).'" width="200" height="150" /></td>
<td align="center" style="font:bold">'.htmlentities($row['name']).' </td>
<td align="center"><form action="" method="post"><input type="submit" name="Submit" value="Delete" />
<input name="id" type="hidden" value="'.$row['id'].'" /></form> </td>
</tr>'
;
}
if($_POST['Submit'] && isset($_POST['id']) && ctype_digit($_POST['id'])){
$sql1="delete image from tiger where id='".$_POST['id']."'";
$query=mysql_query($sql1);
if(!$query){
echo 'Error....';
//and log mysql_error() somewhere
}
else{
echo 'Deletion succesful';
}
答案 1 :(得分:0)
在您的HTML中,您拥有与数据库中的行一样多的隐藏字段,所有这些字段都具有名称“id”。
要快速修复,请使用常规链接并使用GET参数,例如<a href="' . $_SERVER['PHP_SELF'] . '?id=' . $row['id'] . '">delete</a>
。
如果您真的想使用按钮,则必须在按钮的每个周围添加form
标记。