Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 对于许多post值,使用foreach和mysqli\u real\u escape\u字符串_Php_Mysqli - Fatal编程技术网

Php 对于许多post值,使用foreach和mysqli\u real\u escape\u字符串

Php 对于许多post值,使用foreach和mysqli\u real\u escape\u字符串,php,mysqli,Php,Mysqli,我有一个收集大量数据的页面,在将sql查询插入数据库之前,我需要转义这些数据 我在SQL查询之前写下: foreach($_POST as $k => $v) $_POST[$k] = mysqli_real_escape_string($conn,$v); 我的$conn是: $conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz'); 仍然有效,但我不确定是否安全。这是处理POST变量的极其错误的方法。 在很多方面都是错误的 而且肯定不

我有一个收集大量数据的页面,在将sql查询插入数据库之前,我需要转义这些数据

我在SQL查询之前写下:

foreach($_POST as $k => $v) $_POST[$k] = mysqli_real_escape_string($conn,$v);
我的$conn是:

$conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz');

仍然有效,但我不确定是否安全。

这是处理POST变量的极其错误的方法。 在很多方面都是错误的

而且肯定不安全

根据您在查询中使用POST数据的方式,此代码可能会被更正,或者根本不可用且不安全

正如巴尔马所说,你应该使用事先准备好的陈述。如果您也为insert数据准备了一条语句,则效果更好

这应该是安全的

$query=$conn->prepare("select * from yourtable where colum= ? and column2 = ? ");
$query->bind_param('ss', $_POST['var1'],$_POST['var2'] ); 
试试这个

$conn = new mysqli('localhost', 'xxx', 'yyy', 'zzz');

$ARR_DATA = array();
foreach($_POST as $k => $v) 
{
   $ARR_DATA[$k] = mysqli_real_escape_string($conn,$v); // store your escaped value in $ARR_DATA
}

现在你可以使用
$ARR\u DATA
值,而不是在任何地方使用
$\u POST

这应该可以,但如果使用参数化查询会更好。我喜欢你的名字是你的常识:-)你能解释更多吗,它怎么会不安全?用这么多方法把它们都列在这里。严格地说,您喜欢使用的函数与任何安全性都毫无关系。好吧,您的意思是mysqli_real_escape_字符串不利于安全性,例如针对XSS攻击。我确实使用绑定,但我只是问你是指foreach方法不好,还是mysqli_escape_字符串。谢谢你的解释,这还不错。这不适用于安全问题。请不要发布危险和易注射的代码,谢谢。其中的危险是什么?请参考关于该主题的其他答案,这些答案已经被多次回答和讨论过,谢谢。