2012-09-09 35 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

谢谢检索该特定项目的正确方法。 –