2010-07-31 96 views
0

我正在使用表单来获取输入的用户名和密码以将值存储到数据库中,一旦表单被提交,我已经定义了一个表来显示用户表中的所有值,它有3个字段(id,名称,通行证)我想通过它的ID删除每条记录。我如何删除表中的记录?

我正在使用下面的代码取出由用户表中的数据:

while($row = mysql_fetch_assoc($result_select)) { 
      echo "<tr>"; 
      echo "<td>" . $row['id'] . "</td>"; 
      echo "<td>" . $row['name'] . "</td>"; 
      echo "<td>" . $row['pass'] . "</td>"; 
      echo "</tr>"; } 

我想添加删除超链接通过ID删除特定记录。

我尝试使用下面的代码,我无法实现它。

if(mysql_num_rows($result_select) > 0) { 

     if(isset($_POST['id'])) { 
      $query_delete = "DELETE FROM users WHERE id =" .$_POST['id']; 
      $result_delete = mysql_query($query_delete); 

     } 
     echo "<table cellpadding=10 border=1>"; 
     while($row = mysql_fetch_assoc($result_select)) { 

      echo "<tr>"; 
      echo "<td>" . $row['id'] . "</td>"; 
      echo "<td>" . $row['name'] . "</td>"; 
      echo "<td>" . $row['pass'] . "</td>"; 
      echo "<td><a href=".$_SERVER['PHP_SELF']."?id=".$row[id].">Delete</a></td>"; 
      echo "</tr>"; 
     } 
    echo "</table>"; 
    } 

我是一个新手,编程,如果有人给我解释一下简单的话我将不胜感激。谢谢:)

+1

做一些反对SQL注入的事情,否则有人会直接将你的数据库破解到地狱。在你的一段SQL和mysql_real_escape_string()中使用引号来逃避黑客。 – 2010-07-31 08:31:15

回答

1

首先把你删除代码在你的网页是这样的:

if(isset($_POST['submit'])) { 

     for($i = 0; $i < count($_POST['del']); $i++) 
     { 
      // check which records to delete 
      if (isset($_POST['del'][$i])) 
      { 
      $query_delete = "DELETE FROM users WHERE id = " . (int) $_POST['del'][$i]; 
      $result_delete = mysql_query($query_delete) or die(mysql_error()); 
      } 
     } 

     echo 'Record Deleted !!' . '<br /><br />'; 
    } 

后来把你的选择代码并如下修改:

echo '<form action="" method="POST">'; 
while($row = mysql_fetch_assoc($result_select)) { 
     echo "<tr>"; 
     echo "<td>" . $row['id'] . "</td>"; 
     echo "<td>" . $row['name'] . "</td>"; 
     echo "<td>" . $row['pass'] . "</td>"; 
     echo "<td><input type=\"checkbox\" name=\"del[]\"></td>"; 
     echo "</tr>"; 
} 
echo '<input type="submit" name="submit">'; 
echo '</form>'; 
+0

谢谢你,我正在寻找这条信息。 – 2010-07-31 10:05:25

+0

嗨,谢谢你指出这一点,这只是我参加论坛的第二个问题,因为我在两天前加入,而我不了解规则和法规。非常感谢你的回应。 – 2010-07-31 12:56:53

+0

@Ibrahim Azhar阿尔玛:不客气:) – Sarfraz 2010-07-31 12:57:47

0

您需要更改$_POST$_GET,所以这应该工作。

if(isset($_GET['id'])) { 
    $query_delete = "DELETE FROM users WHERE id =" .$_GET['id']; 
    $result_delete = mysql_query($query_delete); 

,并把值双引号中的属性,这样

echo '<td><a href="'.$_SERVER['PHP_SELF'].'?id='.$row[id].'">Delete</a></td>'; 
+1

我真的不建议使用GET进行删除操作。用户可能意外地访问了URL并且您将有不需要的删除。 我相信也W3C不推荐GET修改操作(插入/更新/删除)。只用于显示数据;) – Bogdan 2010-07-31 08:26:16

+0

如果你真的必须,至少对参数做一个intval()。更好的方法是使用PDO进行数据库连接并使用绑定。 – Blizz 2010-07-31 08:36:40

+0

你会用什么方法删除记录?是不可能用$ _POST删除记录? – 2010-07-31 08:44:58