【发布时间】:2014-05-05 17:40:00
【问题描述】:
我在这里做错了什么?我正在尝试创建一个表,该表在每行旁边都有一个删除按钮/链接,单击时会删除该行。
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
mysql_connect('localhost', 'root', 'ca229');
mysql_select_db('testdb');
$result = mysql_query('select * from products');
$numrows = mysql_numrows($result);
//****************************************************************
print "<table border = 3 style = width:400px>";
for($i = 0; $i < $numrows; $i++)
{
$row = mysql_fetch_row($result);
print "<tr>";
foreach($row as $cell)
{
print "<td>";
print $cell;
print "</td>";
}
print "<td><a href='delete.php?id=".$row["id"] ."' >Delete</a> " ;
print "</tr>";
}
print "</table>";
//***************************************************************
mysql_close();
?>
还有……
<?php
$id = $_GET["id"];
$delete = " DELETE * from products where id = ". $id ;
mysql_query($delete) ;
?>
【问题讨论】:
-
尝试将您的删除
<a href='delete.php?id=".$row["id"] ."' >Delete</a>放入您的foreach($row as $cell)循环中。另外,如下所述,删除DELETE之后的* -
您是否收到错误消息?究竟会发生什么?
-
如果这是公共 Internet 上的应用程序,我会更关心您那里的 巨大 SQL injection bug,因为完全鲁莽地无视 proper escaping practices。请不要使用
mysql_query编写新代码,因为它已经过时了,并且在不久的将来会从 PHP 中删除。 -
我假设单击您的链接后,响应的 PHP 文档会重新连接到数据库?你收到什么样的错误信息?除此之外,我会远离 mysql_* 函数。改为查看 mysqli 或 PDO。
-
看起来
delete.php没有打开数据库连接。其他事情:您正在使用已弃用的mysql_*()- 使用mysqli_*()或PDO;您没有转义$_GET查询中使用的DELETE变量,因此它对 SQL 注入开放。查看准备好的语句。
标签: php mysql button html-table sql-delete