2016-06-09 35 views
1

我對我的index.php頁面有一個評論部分。 (就像我在這裏顯示的那樣)我有一個刪除鏈接,將您發送到刪除頁面。我希望能夠在單擊時刪除該特定ID。 的index.php從Mysqli中刪除選定的ID

<div class='commentnest'> 
       <p id='id'> ".$row['id']."</p> 
       <p id='user'> ".$row['user'].":</p> 
       <p id='comment'>".$row['usercomment']." </p> 
       <p id='time'>".$row['timestamp']."</p> 
       <a href='delete.php?=".$row['id']."'>Delete</a> 
     </div> 

delete.php頁

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$sql = "DELETE FROM commenttable WHERE id=id"; 
if (mysqli_query($conn, $sql)) { 
    echo "Record deleted successfully"; 
} else { 
    echo "Error deleting record: " . mysqli_error($conn); 
} 
mysqli_close($conn); 
?> 
每次我發送一個特定的評論有時間

,它會刪除所有的意見。我知道這是因爲我沒有說明要選擇哪個ID,但我很難搞清楚。

感謝您的幫助!

+2

閱讀 - http://php.net/manual/en/tutorial.forms.php – splash58

+2

'id = id'爲true。 http://sqlfiddle.com/#!9/add33/3首先命名您的'GET'參數。然後使用參數化查詢刪除該值。 – chris85

+0

您需要一個GET數組用於此 –

回答

1

所有記錄都被刪除,因爲id=id將始終爲true,除非id爲NULL。您需要正確地從HTML傳遞:

<a href='delete.php?id=".$row['id']."'>Delete</a> 

,然後適當地在查詢中使用它:

$sql = "DELETE FROM commenttable WHERE 
    id='".mysqli_escape_string($conn,$_REQUEST["id"])."'" ; 

如果ID始終是一個整數,你可以寫簡單:

$sql = "DELETE FROM commenttable WHERE 
    id=".(int)$_REQUEST["id"]); 
+0

[Little Bobby](http://bobby-tables.com/)說*** [您的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql -injection-in-php)***瞭解[MySQLi]的[prepared](http://en.wikipedia.org/wiki/Prepared_statement)語句http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。即使[轉義字符串](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)是不安全的! –

+0

mysqli_escape_string()或將用戶輸入轉換爲int將刪除SQL注入的可能性。雖然預處理語句也可以防止SQL注入,但這不是唯一的方法。 –

+1

轉義字符串,而一個好主意,可以被擊敗。無論如何 - 道具給你和你的奔跑家庭!你們都比我快! ¯\\ _(ツ)_ /¯ –