2013-08-04 72 views
-1

我最近做了一個PHP,應該;如果點擊一個鏈接,刪除我的一個MYSQL表中的某一行。不刪除指定的內容從mysql

下面的腳本除了鏈接[href=delete_ac.php?id etc...]導致頁面,但當頁面激活它時echo ERROR而不是刪除行。

<h1>Members</h1> 
<table> 
    <tr> 
     <th>ID</th> 
     <th>Username</th> 
     <th>E-Mail Address</th> 
     <th></th> 
    </tr> 
    <?php foreach($rows as $row): ?> 
     <tr> 
      <td><?php echo $row['id']; ?></td> 
      <td><?php echo htmlentities($row['username'], ENT_QUOTES, 'UTF-8'); ?></td> 
      <td><?php echo htmlentities($row['email'], ENT_QUOTES, 'UTF-8'); ?></td> 
      <td><a href="delete_ac.php?id=<?php echo $row['id']; ?>">delete</a></td> 
     </tr> 
    <?php endforeach; ?> 
</table> 

delete_ac.php 下面的腳本是什麼應該刪除它,但它不是

<?php 

    require("../php/bp-connectionAdmin.php"); 

    $id=$_GET['id']; 

    $query = "DELETE FROM `users` WHERE `id` = $id"; 
    $result = mysql_query($query); 

    if ($result) { 
     echo "Successful"; 
    } else { 
     echo "ERROR"; 
    } 
?> 
+0

在mysql_query後面回顯'mysql_error()'並查看錯誤是什麼。您也應該在將輸入變量添加到查詢之前對其進行清理。 –

+1

您可以使用'mysql_error()'從數據庫中獲取* actual *錯誤,這應該提供有關問題的信息。另外,*請*停止使用'mysql_ *'數據訪問庫。 *至少*升級到'mysqli_ *'或PDO。使用這些庫創建預準備語句,而不是打開當前代碼中的SQL注入漏洞。 – David

+1

也是爲什麼你應該停止使用mysql_ *函數的原因是,他們depracted,將在'../ PHP/BP-connectionAdmin.php',你做一個連接未來 – DeiForm

回答

0

不僅是ID數字?在$ id周圍添加引號不會有幫助嗎?

$query = "DELETE FROM `users` WHERE `id`='$id'"; 
mysql_query($query); 

不確定...但給它一去!

0

戴上後$查詢=「刪除行..

echo "DELETE FROM `users` WHERE `id` = $id"; 
die; 

然後你會看到什麼不順心。 個人而言,我會刪除」,假設ID =整數,你將有:

$query = "DELETE FROM users WHERE id=$id"; 

如果沒有,直接嘗試在數據庫窗口,echood查詢,你會看到什麼是錯的

最可能的是,你應該改變你的行成

$id=intval($_GET['id']); 

這也是更安全!