我是php / 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 :(得分:2)
我不知道您是否真的会使用它来创建一个实时网站,或者只是用它来进行培训。但是,当我查看您的代码时,有一些事情会立即脱颖而出。
到目前为止,您在这里做的最糟糕的事情是直接从表单中使用用户数据并在mysql查询中使用它。这是巨大的安全风险。您应该至少使用mysql_real_escape_string
清理您的输入。但我建议您开始使用PDO
或mysqli_*
。
其次,你要在一个非常低效的循环中查询数据库。您应首先收集所有id
并将它们放入数组中,然后使用这些ID查询数据库。
第三,我没有看到你把id放在任何一行中。因此,您实际上并不知道id
对您尝试删除的数据的影响。
第四;您每次都要创建一个表而不是创建行。您应该只创建一次表并向其添加新行。