2012-03-18 64 views
1

在我正在開發的項目中,用戶有一個存儲在mysql數據庫中的條目列表。在這裏,我顯示所有條目,或者我用戶通過顯示與其用戶名相匹配的所有條目而創建的ideas如何刪除特定的mysql條目?

我想在每個條目旁邊都有一個刪除按鈕,只刪除該條目被按下時。使用下面的代碼,無論刪除按鈕是否被按下,所有條目似乎都會立即被刪除。

<?php 
$username = $_SESSION['Username']; 
$result = mysql_query("SELECT * FROM `ideas` WHERE Username = '$username' ORDER BY `ideaID`") or die(mysql_error()); 
$row = mysql_fetch_row($result); 

while($row = mysql_fetch_array($result)) 
{ ?> 

<?php $id_num = $row[0] ?> 
<b>Title: </b> <?= $row[2]?><br><b>Description: </b> <?= $row[3]?> <br> 
<a onclick ="<?php mysql_query("DELETE FROM `ideas` WHERE ideaId = '$id_num'");?>"> 
<div id="deleteButton">delete</div></a> 
<br><br> 


<?php } ?> 
+3

**警告**您的代碼容易受到sql注入攻擊。 – 2012-03-18 01:55:34

+0

也可能是XSS – Ryan 2012-03-18 01:57:21

+0

嘗試用$ row [0] – 2012-03-18 01:57:44

回答

0

您必須使用AJAX或完整回發向客戶端發回單獨的請求。

1

您誤解了PHP的工作原理。所有PHP代碼在您的文件運行後都會執行,其中包括您刪除的mysql_query。不管你寫<a onclick=還是你所做的任何事情,那就是HTML,而對PHP來說都是無稽之談。 PHP只是輸出它而已。

你想要的是用一個表單替換鏈接,該表單提交你想要的另一個PHP頁面,然後執行刪除MySQL查詢。這個鏈接也可以通過在後臺發生的AJAX請求來完成。或者,您可以使用鏈接來完成相同的事情,但這被認爲是不好的風格。

作爲一個小練習來幫助你理解爲什麼這不起作用,請看看它生成的源代碼。它只是一個空的<a onclick="">。如果PHP按照您的預期工作,那麼應該寫些什麼?

1

的問題是在這條線:

   <?php mysql_query("DELETE FROM `ideas` WHERE ideaId = '$id_num'"); 

當它通過循環的mysql_query執行刪除每個項目的查詢,這就是爲什麼它被刪除。你需要簡單地生成一個指向delete.php的鏈接,並將記錄ID作爲參數傳遞,然後使用mysql_query(「DELETE代碼在delete.php頁面

+0

我該如何生成此鏈接? – Alex 2012-03-20 22:22:44