2013-11-28 48 views
0

我一直在嘗試使用php從表中刪除特定的行。我遵循了一個在線指南,在其中使用每行旁邊的刪除按鈕創建一個包含數據的表。在刪除php中的特定行時遇到問題

當單擊刪除按鈕時,應該使用主鍵「id」刪除該行。相反,它會通過「if」語句並回應「錯誤」。

使用回聲var_dump($ _GET)我相信它是通過ID通過但WHERE子句不知何故沒有收到ID。

如果我刪除WHERE子句,它可以工作,但當然會刪除表中的所有數據

PHPDelete

<?php 

$host="localhost"; // host name 
$username="root"; // database username 
$password="root"; // database password 
$db_name="school"; // database name 
$tbl_name="Student"; // table name 



mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 


$sql="SELECT * FROM $tbl_name"; 
$result=mysql_query($sql); 
?> 
<!--creating the table --> 
<table width="400" border="0" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC"> 
<tr> 
<td colspan="5" bgcolor="#FFFFFF"><strong>Delete data</strong> </td> 
</tr> 

<tr> 
<td align="center" bgcolor="#FFFFFF"><strong>id</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Name</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Age</strong></td> 
<td align="center" bgcolor="#FFFFFF"><strong>Username</strong></td> 
<td align="center" bgcolor="#FFFFFF">&nbsp;</td> 
</tr> 

<?php 
while($rows=mysql_fetch_array($result)){ 
?> 

<tr> 
<td bgcolor="#FFFFFF"><? echo $rows['id']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['Name']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['Age']; ?></td> 
<td bgcolor="#FFFFFF"><? echo $rows['Username']; ?></td> 
<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=$id'>delete</a></td> 


</tr> 

<?php 




// close while loop 
} 

?> 

</table> 

<?php 
// close connection; 
mysql_close(); 
?> 

和phpDelete2

<?php 


$host="localhost"; // host name 
$username="root"; // database username 
$password="root"; // database password 
$db_name="school"; // database name 
$tbl_name="Student"; // table name 

// Connect to server and select databse. 
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select database"); 

// get value of id that sent from address bar 


$id = $_GET['id']; 

// Delete data in mysql from row that has this id 



$sql="DELETE FROM $tbl_name"; 

$result=mysql_query($sql); 

// if successfully deleted 
if($result){ 
echo "Deleted Successfully"; 
echo "<BR>"; 
echo "<a href='index.php'>Back to main page</a>"; 
} 

else { 
echo "error"; 
} 
?> 

<?php 
// close connection 
mysql_close(); 
?> 
+0

精確您的麻煩線和更新後。目前,在這個問題中有很多不必要的信息 –

+0

僅供參考,mysql_functions自php 5.5.x起棄用!您應該切換到mysqli。 http://php.net/manual/en/migration55.deprecated.php –

+1

歡迎來到堆棧溢出! [**請不要在新代碼中使用'mysql_ *'函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 –

回答

0

你從來沒有真正困擾回顯您的ID值:

<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=$id'>delete</a></td> 

應該

<td bgcolor="#FFFFFF"><a href='phpDelete2.php?id=<?php echo $id ?>'>delete</a></td> 
               ^^^^^^^^^^^^^^^^^ 

同時,NEVER把作爲刪除操作是危險的東西放到一個簡單的鏈接。考慮一下如果你的瀏覽器決定「預加載」所有鏈接頁面會發生什麼?突然你刪除了你在頁面上列出的所有東西。

您的DELETE查詢也不會使用您嘗試傳入的ID,並且只會刪除表中的所有內容。它應該是

DELETE FROM yourtable WHERE id = ID_VALUE_GOES_HERE 

注意的SQL injection attacks,以及...

相關問題