Php 保护Mysql Delete语句的最佳方法是什么?

Php 保护Mysql Delete语句的最佳方法是什么?,php,mysql,Php,Mysql,我想你们会知道最好的方法: 当我从ORDERS表中删除订单($prodId)时,该脚本将从ordered_items表中删除所有订购的项目行,该表包含系统中每个订单中订购的所有项目 是否有最佳实践来确保我想要删除的内容被删除并且仅此而已?我担心脚本中出现错误/注入错误/键入错误,意外地删除了所有订单的所有订购项目行。 这就是我走了多远 $delete_prod_items = mysqli_real_escape_string($con,$_REQUEST['prodId']); if (is_

我想你们会知道最好的方法:

当我从ORDERS表中删除订单($prodId)时,该脚本将从ordered_items表中删除所有订购的项目行,该表包含系统中每个订单中订购的所有项目

是否有最佳实践来确保我想要删除的内容被删除并且仅此而已?我担心脚本中出现错误/注入错误/键入错误,意外地删除了所有订单的所有订购项目行。

这就是我走了多远

$delete_prod_items = mysqli_real_escape_string($con,$_REQUEST['prodId']);
if (is_numeric($delete_prod_items)){
    $sql3 = "DELETE from proteus.ordered_items where order_id = $orderId";
    mysqli_query($con,$sql3) or die('DELETE Order $orderId from the Ordered Items table failed: ' . mysqli_error($con).'<br>');     
}
$delete\u prod\u items=mysqli\u real\u escape\u string($con,$\u REQUEST['prodId']);
如果(是数字($delete\u prod\u items)){
$sql3=“从proteus.ordered\u项目中删除,其中order\u id=$orderId”;
mysqli_查询($con,$sql3)或die('DELETE Order$orderId from Ordered Items table failed:'。mysqli_错误($con)。'
'; }
  • 此脚本通过我的表单发布到
  • $orderID是脚本用于标识应删除哪些项目行的订单号
  • $delete\u prod\u item是转义的$prodID值。我当时正试图非常谨慎。也许我不需要这个

我遗漏了什么吗?

不知道为什么有人会提到它,但真正保护任何声明的最好方法是使用:


也要模仿@zerkms提到的内容,使用
POST
请求您的信息。

不知道为什么会有人提到它,但真正保护任何声明的最佳方法是使用:


也要模仿@zerkms提到的内容,使用
POST
请求您的信息。

不知道为什么会有人提到它,但真正保护任何声明的最佳方法是使用:


也要模仿@zerkms提到的内容,使用
POST
请求您的信息。

不知道为什么会有人提到它,但真正保护任何声明的最佳方法是使用:


同样,遵循@zerkms提到的内容,并使用
POST
请求获取您的信息。

首先,您需要注意sql注入。这将给你一个想法

其次,您可以使用javascript获得一个弹出窗口,要求用户在删除之前进行确认

接下来,为了避免意外删除多行,需要在查询中包含
LIMIT 1


注意:您还可以通过创建不同的用户(用户名)来访问mysql数据库,并在
mysql\u connect('host','username','password','database')
函数中使用它来限制权限。如果您正在显示一些非常重要的内容,您可以考虑不删除权限。

首先,首先需要注意SQL注入。这将给你一个想法

其次,您可以使用javascript获得一个弹出窗口,要求用户在删除之前进行确认

接下来,为了避免意外删除多行,需要在查询中包含
LIMIT 1


注意:您还可以通过创建不同的用户(用户名)来访问mysql数据库,并在
mysql\u connect('host','username','password','database')
函数中使用它来限制权限。如果您正在显示一些非常重要的内容,您可以考虑不删除权限。

首先,首先需要注意SQL注入。这将给你一个想法

其次,您可以使用javascript获得一个弹出窗口,要求用户在删除之前进行确认

接下来,为了避免意外删除多行,需要在查询中包含
LIMIT 1


注意:您还可以通过创建不同的用户(用户名)来访问mysql数据库,并在
mysql\u connect('host','username','password','database')
函数中使用它来限制权限。如果您正在显示一些非常重要的内容,您可以考虑不删除权限。

首先,首先需要注意SQL注入。这将给你一个想法

其次,您可以使用javascript获得一个弹出窗口,要求用户在删除之前进行确认

接下来,为了避免意外删除多行,需要在查询中包含
LIMIT 1

注意:您还可以通过创建不同的用户(用户名)来访问mysql数据库,并在
mysql\u connect('host','username','password','database')
函数中使用它来限制权限。如果你正在展示一些非常重要的东西,你可以考虑不删除版权。

UL>
  • 转义数据有助于防止SQL注入
  • 最好使用
    $\u POST
    来限制请求,而不是
    $\u request
  • 如果此页面仅用于管理员,则可以,因为只有您有访问权限,但是,如果用户有访问权限,则最好在继续删除之前对请求应用一些条件(例如,验证他们是否仅删除与其帐户相关的内容)
      • 转义数据有助于防止SQL注入
      • 最好使用
        $\u POST
        来限制请求,而不是
        $\u request
      • 如果此页面仅用于管理员,则可以,因为只有您有访问权限,但是,如果用户有访问权限,则最好在继续删除之前对请求应用一些条件(例如,验证他们是否仅删除与其帐户相关的内容)
          • 转义数据有助于防止SQL注入
          • 最好使用
            $\u POST
            来限制请求,而不是
            $\u request
          • 如果此页面仅供管理员使用,则可以,因为只有您有访问权限,但是,如果用户有访问权限,则最好在继续删除之前对请求应用一些条件(例如,验证
            $delete_prod_items = mysqli_real_escape_string($con,$_REQUEST['prodId']);
            $mysqli = new mysqli("localhost", "localuser", "password", "database");
            if ($mysqli->connect_errno) {
                echo "Failed to connect to MySQL: " . $mysqli->connect_error;
            }
            if (!($stmt = $mysqli->prepare("DELETE FROM `proteus`.`ordered_items` WHERE `order_id` = ?"))) { //whatever query you want
                echo "Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error;
            }
            $stmt->bind_param("s", $delete_prod_items);
            $stmt->execute();
            $stmt->close();