2013-11-29 165 views
0

我知道這個問題已被詢問了太多次,但我搜索了並沒有找到任何解決我的問題的方法。在表中,我有4列:id(自動增量和主鍵),type,quantitydate。問題是當我按刪除鏈接它不會刪除我想要的特定行,請忘記代碼注入,這是一個示例程序。謝謝。使用PHP從MySQL中的表中刪除特定的行

一個表的代碼是這樣的:

<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

當用戶點擊「刪除」,然後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。我認爲這是暗示的,但不需要在* delete.php *中運行「SELECT」查詢。 mysql_接口已棄用;應該使用mysqli或PDO。 – spencer7593

+0

@ spencer7593非常感謝!如果OP想要檢查購買是否由用戶擁有並且確實存在,那麼SELECT就是好的! –

+0

非常感謝 –