【发布时间】:2012-03-26 23:13:57
【问题描述】:
我已经使用表中的 MySQL 数据填充了一个 html 表单。
我在该表中包含了一个表单,如果提交该表单,应该会从 MySQL 表中删除该行数据。
这是创建用我的表中的 MySQL 数据填充表的代码。(错过了数据库连接代码和其他我认为不相关的代码)。
while($row_data=mysql_fetch_array($table_data)){
echo "<tr>";
echo "<td>" . $row_data['ID'] . "</td>";
echo "<td>" . $row_data['Site'] . "</td>";
echo "<td>" . $row_data['Date'] . "</td>";
echo "<td>" . $row_data['Target_Site'] . "</td>";
echo "<td>" . $row_data['Target_Contact_Email'] . "</td>";
echo "<td>" . $row_data['Target_Contact_Name'] . "</td>";
echo "<td>" . $row_data['Link_Type'] . "</td>";
echo "<td>" . $row_data['Link_Acquired'] . "</td>";
echo "<td>" . $row_data['Notes'] . "</td>";
echo "<td>" . $row_data['Link_URL'] . "</td>";
echo "<td></td>";
echo "<td><form action='delete.php' method='post'><input type='hidden' name='delete_id' value=" . $row_data['ID'] . "><input type='submit' value='✓' name='delete' style='background:none;' /></form></td>";
echo "</tr>";
}
正如您在该代码中看到的那样,最后有一个表格数据,它是一个表单,如果单击它意味着删除该给定行。从表格中可以看出,动作是delete.php。
这是delete.php的代码(遗漏了数据库连接代码)
$ID = $_POST['delete_id'];
$Delete = $_POST['delete'];
if(isset($Delete)){
mysql_query("DELETE FROM link_building WHERE 'ID'=" . $ID);
header("location:link_building.php?success2=1");
}else{
header("location:link_building.php?fail2=1");
}
现在,它有点工作,但只删除 ID 为 0 的数据行。例如,每当我尝试删除 ID 为 2 的数据行时,它说它成功删除了数据,但没有实际上删除它。但是,当我在 id 为 0 的行上单击删除时,它会删除所有数据,而不仅仅是该行。
【问题讨论】:
-
尝试在变量(字符串)中构建查询并输出它,并注释掉 mysql_query 和重定向。并尝试手动运行这个输出的查询(phpmyadmin),这可能会告诉你出了什么问题
-
@Ryan - 你在哪里读到你必须引用列名?如果有教程或其他东西可以教人们这样做,我真的很感兴趣。
-
我真的不记得说实话了。令人惊讶的是,这么小的事情如何产生巨大的影响
-
嗯,它只是告诉你这不是一件小事。对于有经验的用户来说,这意味着它是一串数据。对于没有经验的人来说,这是一件小事,几乎没有任何意义。这些天我看到很多问题都围绕着同样的问题 - 使用单引号来引用列名而不是 ` 字符,所以我想知道是否有教程教人们使用单引号。
-
提示:使用HEREDOCs 使该html blob 更易于阅读并消除重复的回声。
标签: php html mysql forms html-table