我的一个页面我称之为删除功能
$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
存在一些问题请帮我如何删除我选择的行;
最好的是我必须在我的页面上调用函数才能完成所有功能!
答案 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"的好网站可以为您提供更多相关信息。