想要删除特定行。如何获取ID?

时间:2010-09-01 07:43:47

标签: php mysql

$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。所以请帮助我怎么做?

2 个答案:

答案 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标记。

相关问题