2009-10-14 73 views
1

试图在这里执行一个非常简单的任务。

我有一个<ol>包含4行数据在一些方便<li> s。我想添加一个删除按钮来从表格中删除该行。 delete.php中的脚本似乎已经完成,但是当我返回并检查dashboard.php和PHPMyAdmin以获取列表时,该行从未被删除。

下面是删除按钮的代码(PHP内):

Print "<form action=delete.php method=POST><input name=".$info['ID']." type=hidden><input type=submit name=submit value=Remove></form>"; 

移动到delete.php:

<? 
//initilize PHP 

if($_POST['submit']) //If submit is hit 
{ 
    //then connect as user 
    //change user and password to your mySQL name and password 
    mysql_connect("mysql.***.com","***","***") or die(mysql_error()); 

    //select which database you want to edit 
    mysql_select_db("shpdb") or die(mysql_error()); 

    //convert all the posts to variables: 
    $id = $_POST['ID']; 


    $result=mysql_query("DELETE FROM savannah WHERE ID='$id'") or die(mysql_error()); 

    //confirm 
    echo "Patient removed. <a href=dashboard.php>Return to Dashboard</a>"; 
} 
?> 

数据库是:shpdb 表是:大草原

想法?

+0

你能打印即回声 “DELETE FROM WHERE大草原ID = '$ ID'”;看看$ id是否真的被替换的值。 – jatanp 2009-10-14 23:55:26

+6

此代码易受SQL注入攻击。 http://php.net/manual/en/security.database.sql-injection.php – 2009-10-14 23:58:24

+0

此外,你必须确保人们不能通过猜测id's来删除任意的东西。如果这是用户相关的数据,什么阻止我猜测ID和删除其他人的信息。 – BeWarned 2009-10-15 00:47:38

回答

7

它拒绝坚持,因为你把它称为一件事,并与另一件事。变化:

"<input name=".$info['ID']." type=hidden>" 

"<input name=ID value=".$info['ID']." type=hidden>" 

因为delete.php你想与访问它:

$id = $_POST['ID']; 

你真的应该引用属性值以及即:

print <<<END 
form action="delete.php" method="post"> 
<input type="hidden" name="ID" value="$info[ID]"> 
<input type="submit" name="submit" value="Remove"> 
</form> 
END; 

或甚至:

?> 
form action="delete.php" method="post"> 
<input type="hidden" name="ID" value="<?php echo $info['ID'] ?>"> 
<input type="submit" name="submit" value="Remove"> 
</form> 
<? 
+0

谢谢cletus。我知道这很简单。 – 2009-10-14 23:59:17

3

对于网络的爱,请不要自己构建SQL查询。使用PDO

+0

感谢您的支持。 – 2009-10-15 00:28:03

+0

鼓励我做一些研究......谢谢! – 2009-10-15 00:37:51

1

我想说的另一点。我95%确定你不能给一个输入一个数字名称/ id属性。它必须像“id_1”而不是“1”。你也可以用数组来做数组。

所以,你可以做到这一点

<input name="delete[2]"> 

然后在你的PHP

if(isset($_POST['delete'])) 
    foreach($_POST['delete'] as $key=>$val) 
    if($_POST['delete'][$key]) delete from table where id = $val 
相关问题