2012-10-29 35 views
0

我在頁面上顯示的每條記錄後都有一個SQL刪除按鈕。我確切地知道按鈕應該做什麼,但它不起作用!我甚至呼應$sql,以確保它是正確的,並顯示以下內容:SQL刪除查詢顯示,但不採取行動

DELETE * FROM recensies WHERE ID ='508a7a732ef67' AND email ='[email protected]*****.nl' 

當我看在phpMyAdmin記錄我可以看到,有恰好與此信息的記錄,但對別人也有必須是,這是我的代碼,我相信你會明白我的意思。

<?php 

// Up here I connect to my DB, no problems there.. 

$query = "SELECT * FROM recensies ORDER BY timestamp DESC"; 
$result = mysql_query($query) or die(mysql_error()); 

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

    $IDdelete = mysql_real_escape_string($_POST['ID']); 
    $emaildelete = mysql_real_escape_string($_POST['email']); 

    $sql = "DELETE * FROM recensies " 
     . "WHERE ID ='$IDdelete' AND email ='$emaildelete'"; 

    mysql_query($sql); 

    echo $sql; 
} 

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

?> 
<form method="post"> 
<tr> 
<td><?php echo $row['cijfer']; ?></td> 
<td><input type="text" name="ID" value="<?php echo $row['ID']; ?>"></input></td> 
<td><?php $newb = substr($row['beoordeling'], 0, 30); echo $newb; ?>..</td> 
<td><?php echo $row['voornaam']; ?> <?php echo $row['achternaam']; ?></td> 
<td><input type="text" name="email" value="<?php echo $row['email']; ?>"></td> 
<td><?php $datum = date("j/n/y", strtotime($row[timestamp])); echo $datum; ?></td> 
<td><input type="submit" value="Verwijderen" name="verwijderen"></td> 
</tr> 
</form> 

<?php 

} 

?> 

</table> 

</div> 

</div> 

我只是找不到我的錯誤!

+0

刪除總是意味着整排的,這就是爲什麼SQL不允許提*或任何字段名稱。刪除意味着刪除不刪除。如果您不通過使用where來指定行,則從sometable刪除..刪除所有行。 – Sami

回答

2

我認爲你需要從delete語句刪除*,所以像這樣的:

DELETE FROM recensies WHERE ID ='508a7a732ef67' AND email ='[email protected]*****.nl' 
+0

謝謝,修復它,因爲你是第一個回答,我會將這一個標記爲公認的! – user1555076

+0

@a_horse_with_no_name對不起,我是從[w3schools](http://www.w3schools.com/sql/sql_delete.asp)引用,但看起來他們錯了... –

+0

已知w3schools發佈質量很低。我只是瀏覽了一些頁面,花了我2​​分鐘才發現更多錯誤。 –

3

我不知道這是否是你的問題,但DELETE語法不需要列列表( *在你的查詢): 你應該寫

DELETE FROM recensies WHERE ID = ... 

沒有*

+0

非常感謝,就是這樣! – user1555076

1

變化

$sql = "DELETE * FROM recensies WHERE ID ='$IDdelete' AND email ='$emaildelete'"; 

$sql = "DELETE FROM recensies WHERE ID ='$IDdelete' AND email ='$emaildelete'"; 

取出*

嘗試

mysql_query($sql); 
echo mysql_error(); 

你應該有說

您的SQL語法錯誤的錯誤;檢查 對應於你的MySQL服務器版本正確的語法使用 附近「*從recencies」位於第1行的手冊:

+0

謝謝!額外*是問題! – user1555076