Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP,如何保护从URL获取变量_Php_Mysql - Fatal编程技术网

PHP,如何保护从URL获取变量

PHP,如何保护从URL获取变量,php,mysql,Php,Mysql,以下是网址: 以下是代码: mysqli_query("SELECT * from members where id='$_GET[id]'"); 哪种方法是安全的?在使用MySQLi时使用并绑定变量 $stmt = $mysqli->prepare("SELECT * from members where id=?"); $stmt->bind_param('i', $_GET['id']); $stmt->execute(); 您可能还希望首先验证$\u GET['i

以下是网址:

以下是代码:

mysqli_query("SELECT * from members where id='$_GET[id]'");
哪种方法是安全的?

在使用MySQLi时使用并绑定变量

$stmt = $mysqli->prepare("SELECT * from members where id=?");
$stmt->bind_param('i', $_GET['id']);
$stmt->execute();
您可能还希望首先验证
$\u GET['id']
是否为整数,如果不是,则返回一条错误消息,而不是让db查询的所有开销都不返回任何内容


阅读前面的问题,了解为什么你应该采取这种方法

永远不要在查询中直接使用
$\u GET
。首先,您必须对其进行清理。如果您正在使用MySQLi(看起来是这样),那么请使用带有绑定变量的准备语句。您可以尝试
WHERE id=“.mysql\u real\u escape\u string($\u GET[“id”])
但是
mysqli.*
函数与或更好。在mysqli上使用,您就不必担心注入。我也建议使用可能重复的命令,同时确保$\u GET['id']与
isset()
!empty()
一起存在,以防止未定义的错误。