2013-03-11 143 views
0

我的一个网页我把这个删除功能通过使删除功能

$Sql=mysql_query("SELECT Id FROM products"); 
    $Result=mysql_fetch_row($Sql); 
    $Id=$Result[0]; 
    DeleteRecords("products","Id",$Id) 

上的functions.php删除特定记录我提出以下

function DeleteRecords($Table,$Exp,$Value) 
{ 
if(isset($_GET['delete'])) 
{ 
$Sql="DELETE FROM $Table WHERE $Exp=$Value"; 
$Result=mysql_query($Sql); 
if($Result) 
    { 
     echo "<script>alert('Record Deleted')</script>"; 
     echo "<script>window.location='products.php';</script>";  
    } 
} 
} 

这个功能现在当我点击删除链接:

<a href='".$_SERVER['PHP_SELF']."?delete=$Id'>Delete</a> 

它删除第一行。似乎有一些问题与$ Id

请帮我如何删除我选择的行;

最好的是所有的事情都应该在函数中完成,我只需要在我的页面上调用函数!

+2

[**请不要在新代码中使用'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://www.brightmeup.info/article.php?a_id=2)。 – insertusernamehere 2013-03-11 00:29:40

+1

Dude我刚开始学习php我甚至不知道mysql完全如何跳过它! – 2013-03-11 00:32:25

+1

老兄,我们在这里教你*右*的方式 – Kermit 2013-03-11 00:34:43

回答

0

您选择所有产品:

$Sql=mysql_query("SELECT Id FROM products"); 

那么你的第一个元素的ID分配给$Id

$Id=$Result[0]; 

然后,你将$Id到你的函数 - 同样的值称为$Value有:

DeleteRecords("products","Id",$Id) 

终于在你身边r功能检查是否设置了$_GET['delete']。如果是,你从结果的第一个元素之前$_GET['delete']使用$Id在删除查询(而不是通过值:

$Sql="DELETE FROM $Table WHERE $Exp=$Value"; 

所以你从不使用的$_GET['delete']


你可以写:

DeleteRecords("products","Id", $_GET['delete']); 

,并在功能:

$Value = intval($Value); 

if (0 != $Value) { 
    $Sql="DELETE FROM $Table WHERE $Exp=$Value"; 
    $Result=mysql_query($Sql); 
    […] 

这至少是某种阻止SQL注入的方式。不适合所有情况,而是一个起点。有一个很好的网站关于"Bobby Tables",可以给你更多的信息。

+0

您能否寄给我正确的密码?它是我第一次做功能,所以我缺乏概念!但我的删除isset工作正常,当我mouseover我的删除链接它显示在URL中的正确的ID,但点击它删除 – 2013-03-11 00:44:07

+0

表的第一行,我应该把什么,而不是我的网页$ Id? – 2013-03-11 00:57:53

+0

@RaheelExile我假设您的链接是通过遍历所有产品的循环生成的,并且它是每个产品的独特链接?在这种情况下,你不需要改变任何东西。 – insertusernamehere 2013-03-11 01:08:27