2014-10-04 106 views
-1

即時通訊在PHP/MySQL的初學者,它就像我的第一個網站。我想要做的是一個循環,顯示從刪除按鈕的MySQL(工程)記錄,所以我可以刪除整個行,只要我想要的。我寫了代碼,但它不起作用。從mysql中刪除特定的行

while ($row = mysql_fetch_array($result)) { 
echo "<table><TR><TD class='nazwa'>" . $row["nazwa"] . 
    "</br></TD><TD class='opis'>" . $row["opis"] . 
    "</br></TD><TD class='fotka'> <img src=". $row["zdjecie"] . 
    "></br></TD><TD class='linkowanko'>" . $row["link"] . 
    "</TD></TR>\n</br></br></br></table>"; 
    //usuwansko 
    $row["id"] = $_GET['id']; 
     echo "<form action='marta.php' method='post'> 
    <INPUT TYPE = 'submit' Name = 'Submit1' VALUE = 'Usun'> 
    </form>"; 
     if (isset($_POST["Submit1"])) 
     { 
     mysql_query($db,"DELETE FROM marta WHERE id = $id"); 
     } 

PS。我知道這可能是可怕的,對不起,這是:/

+0

你能否詳細說明「但它不起作用」?你有錯誤嗎? – Mureinik 2014-10-04 16:24:02

+0

不,它什麼都不做 http://chcemyto.cba.pl/marta.php這裏是頁面,你可以嘗試自己 – xox1141 2014-10-04 16:24:42

回答

2

我不知道你是否真的會用它來創建一個實時網站,或者只是爲了培訓。但是當我看着你的代碼時,有幾件事情立即脫穎而出。

到目前爲止,您在這裏所做的最糟糕的事情是直接從表單使用用戶數據,並在mysql查詢中使用它。這是一個巨大的安全風險。你應該至少用mysql_real_escape_string來清理你的輸入。但我建議你開始使用PDOmysqli_*

其次,你是在一個真正低效的循環中查詢數據庫。您應該首先收集所有id,然後將它們放入數組中,然後使用這些ID查詢數據庫。

第三,我沒有看到你把id放在任何行中。所以你實際上並不知道id是你想要刪除的數據。

第四;您每次創建一個表而不是創建行。您應該只創建一次表格並添加新行。

+1

+1這個代碼實際上有更多的問題。它遭受基本的業務邏輯和呈現分離,並嚴格耦合存儲邏輯 – Yang 2014-10-04 16:31:12

+0

@bad_boy是啊我可以繼續前進,但我想我會保持它簡短;) – Bono 2014-10-04 16:31:58

+0

我的ID只是在數據庫中的自動增量選項,如果我只是顯示行[id]顯示正確的編號 – xox1141 2014-10-04 17:49:32