2012-09-09 66 views
0

希望有人能幫助我在這裏,我想我不是在調用我的功能。 我試圖從我的數據庫中檢索一些數據,並在每個正在檢索的項目上附加一個刪除鏈接,這樣當我點擊刪除時,它將刪除具有刪除功能的特定項目。Php從mysql數據庫中刪除項目

我的代碼從數據庫檢索項目如下。

<?php 
$con = mysql_connect("localhost","root",""); 
mysql_select_db("uloaku", $con); 
$count = 1; 
$y = mysql_query("SELECT * FROM transaction"); 
if(mysql_num_rows($y) != 0){ 

echo "<table bgcolor=\"white\" width=\"1000\" bordercolor=\"grey\" border=\"5\" >"; 
echo "<tr> 
<td align=\"center\">No</td> 
<td align=\"center\">Date</td> 
<td align=\"center\">Current Balance</td> 
<td align=\"center\">Avaliable Balance</td> 
<td align=\"center\">Account Status</td> 
<td align=\"center\">Delete Account</td> 

</tr>"; 

while ($z = mysql_fetch_array($y, MYSQL_BOTH)){ 
     echo "<tr> 
     <td align=\"center\">".$count++."</td> 
     <td align=\"center\">".$z[1]."</td> 
     <td align=\"center\">".$z[2]."</td> 
     <td align=\"center\">".$z[3]."</td> 
     <td align=\"left\" width=\"300\">".$z[4]."</td> 
     <td><a href=\"delete.php\">delete</a></td> 
     </tr>"; 
    } 
    echo "</table>"; 
    } 
?> 

而且我的代碼刪除

<?php 
session_start(); 
$con = mysql_connect("localhost","root",""); 
mysql_select_db("uloaku", $con); 
$id = $_GET['id']; 
$sql = mysql_query("DELETE FROM transaction WHERE id='$id' LIMIT 1") or die (mysql_error()); 
header("Location: vacct.php"); 
?> 

我知道我在這裏失去了邏輯,希望有人能告訴我或給我簡單的出路。目前我可以成功從數據庫中檢索我的項目,我唯一的問題是每次點擊刪除按鈕時都可以應用刪除功能。

回答

0

使用下面code.I添加了驗證和加密

<?php 
$con = mysql_connect("localhost","root",""); 
mysql_select_db("uloaku", $con); 
$count = 1; 
$y = mysql_query("SELECT * FROM transaction"); 
if(mysql_num_rows($y) != 0){ 

echo "<table bgcolor=\"white\" width=\"1000\" bordercolor=\"grey\" border=\"5\" >"; 
echo "<tr> 
<td align=\"center\">No</td> 
<td align=\"center\">Date</td> 
<td align=\"center\">Current Balance</td> 
<td align=\"center\">Avaliable Balance</td> 
<td align=\"center\">Account Status</td> 
<td align=\"center\">Delete Account</td> 

</tr>"; 

while ($z = mysql_fetch_array($y, MYSQL_BOTH)){ 
     echo "<tr> 
     <td align=\"center\">".$count++."</td> 
     <td align=\"center\">".$z[1]."</td> 
     <td align=\"center\">".$z[2]."</td> 
     <td align=\"center\">".$z[3]."</td> 
     <td align=\"left\" width=\"300\">".$z[4]."</td> 
     <td><a href=\"delete.php?id=".base64_encode($z[0])."\">delete</a></td> 
     </tr>"; 
    } 
    echo "</table>"; 
    } 
?> 

code to delete 

<?php 
session_start(); 
$con = mysql_connect("localhost","root",""); 
mysql_select_db("uloaku", $con); 
$id = base64_decode($_GET['id']); 
if(!empty($id)){ 
$sql = mysql_query("DELETE FROM transaction WHERE id='$id' LIMIT 1") or die (mysql_error()); 
} 
header("Location: vacct.php"); 
?> 
+0

就像預期一樣工作。謝謝Shail –

+2

@shail base64是_encoding_,而不是加密。 – moonwave99

+0

是的,它的一個編碼 – shail

0
<td><a href=\"delete.php\">delete</a></td> 

你是如何通過ID刪除到你的delete.php腳本?

+0

我不知道要通過ID,以便它可以刪除數據庫的建議 –

1

你必須通過id當您單擊刪除鏈接:

<a href=\"delete.php?id=$z[theIdKey]\"> 
0

變化:

<td><a href=\"delete.php\">delete</a></td> 

到:

<td><a href=\"delete.php?id=".$z[0]."\">delete</a></td> 

如果$ Z [0] ID。

在你delete.php,請確保您也難逃「交易」一詞使用反引號:

DELETE FROM `transaction` WHERE id=123 

這是因爲「交易」是一個保留MySQL的關鍵字。

請同時閱讀SQL Injections

+0

謝謝檢索該特定項目的正確方法。 –