使用PHP从MySQL中的表中删除特定行

时间:2013-11-29 00:27:50

标签: php mysql

我知道这个问题被问了太多次,但我已经搜索过,发现什么都没有解决我的问题。在表格中,我有4列:id(自动增量和主键),typequantitydate。问题是,当我按下删除链接时,它不会删除我想要的特定行,请忘记代码注入,这是一个示例程序。感谢。

表格的代码如下:

<div id="content" align="center">
<table border="1">
<tr>
<td>Item</td>
<td>Quantity</td>
<td>Date</td>
<td></td>
</tr>
<?php
include("connect.php");
$query=("SELECT * FROM purchase");
$result=mysql_query($query);
while($row=mysql_fetch_array($result))
{
?>
<tr>
<td><?php echo $row['1'];?></td>
<td><?php echo $row['2'];?></td>
<td><?php echo $row['3'];?></td>
<td><a href="delete.php">Delete</a></td>
</tr>
<?php
}
?>
</table>
</div>

删除功能:

<?php
include("connect.php");

$host="localhost";
$user="root";
$pass="";
$db_name="proyek";
$tbl_name="purchase";

mysql_connect("$host", "$user", "$pass")or die("Cannot connect to SQL."); 
mysql_select_db('$db_name');
$query=("SELECT * FROM purchase");
$result=mysql_query($query);
$row=mysql_fetch_array($result);
$id=$row[0];

mysql_query("DELETE from purchase WHERE id='$id'");

header("location:purchasehistoryadmin.php");
?>

2 个答案:

答案 0 :(得分:3)

当用户点击“删除”然后调用delete.php时,所以想要删除的购买ID应该通过delete.php传输,

关于“注入”,下面的代码只是示例。而且, CSRF更危险,防止SQL注入很容易,但CRSF有点困难。

<强> list.php的

<td><a href="delete.php?id=<?echo $row['id'];?>">Delete</a></td>

<强> delete.php

$id = $_GET['id'];
mysql_query("DELETE from purchase WHERE id='$id'");

答案 1 :(得分:1)

您访问过delet.php,但您没有说要删除哪个ID。你必须建立像

这样的网址

delete.php?PARAM = 5

使用$ _GET来捕获id并将其传递给查询。(现在你只删除第一行)

同时检查此http://www.w3schools.com/php/php_forms.asp

或者

http://php.net/manual/en/reserved.variables.get.php