2014-10-04 119 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