PHP | MySQLi:使用..real_escape。。有精确的参数吗?

PHP | MySQLi:使用..real_escape。。有精确的参数吗?,php,mysqli,Php,Mysqli,我想知道在这种情况下是否仍应该使用mysqli\u real\u escape\u字符串 我有一组url参数,这些参数是可以接受的,否则会被忽略 if(isset($_GET["data"])) { $data = $_GET["data"]; switch($data) { case "one" : //do x $sql = "SELECT * FROM table WHERE page='".$data."'"; break;

我想知道在这种情况下是否仍应该使用mysqli\u real\u escape\u字符串

我有一组url参数,这些参数是可以接受的,否则会被忽略

if(isset($_GET["data"])) {  
  $data = $_GET["data"]; 
  switch($data) { 
    case "one" :
      //do x
      $sql = "SELECT * FROM table WHERE page='".$data."'";
    break;
    case "two" :
      //do x
    break;
    case "three" :
      //do x
    break;
  }
}

在这种情况下,不需要mysqli\u real\u escape\u字符串。此函数的目的是“清理”用户输入的数据

在当前编写的代码中,是的,您使用的是用户输入的数据,$_GET['data']可能包含表单中输入的内容(或类似内容);但是,由于在将$\u GET['data']连接到查询之前,使用switch语句检查它,所以您就可以了

但是,如果您决定实现一个“默认情况”,将$data连接到一个查询,而不首先将其与您知道是安全的值进行比较,那么,是的,您应该清理数据


这里有一些关于清理用户输入的进一步阅读:

在这种情况下,不需要mysqli\u real\u escape\u字符串。此函数的目的是“清理”用户输入的数据

在当前编写的代码中,是的,您使用的是用户输入的数据,$_GET['data']可能包含表单中输入的内容(或类似内容);但是,由于在将$\u GET['data']连接到查询之前,使用switch语句检查它,所以您就可以了

但是,如果您决定实现一个“默认情况”,将$data连接到一个查询,而不首先将其与您知道是安全的值进行比较,那么,是的,您应该清理数据


下面是关于清理用户输入的进一步阅读:

除了已知字符串之外,您没有向查询传递任何内容。您可以安全地避免转义。您不会向查询传递除已知字符串以外的任何内容。你可以安全地避免逃跑。