2010-07-31 95 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