通过删除功能删除特定记录

时间:2013-03-11 00:28:21

标签: php

我的一个页面我称之为删除功能

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

on 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

存在一些问题

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

最好的是我必须在我的页面上调用函数才能完成所有功能!

1 个答案:

答案 0 :(得分:0)

您选择所有产品:

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

然后将第一个元素的id分配给$Id

$Id=$Result[0];

然后您将$Id传递给您的函数 - 相同的值称为$Value

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

最后在您的函数中,检查是否设置了$_GET['delete']。如果是,则在删除查询之前使用结果的第一个元素中的$Id(而不是$_GET['delete']中传递的值:

$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"的好网站可以为您提供更多相关信息。