对于许多post值,使用foreach和mysqli_real_escape_string

时间:2014-02-22 10:02:12

标签: php mysqli

我有一个收集许多数据的页面,我需要在将SQL查询插入db之前转义这些数据。

我在SQL查询之前写这个:

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

我的$ conn是:

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

仍在工作,但我不确定它是否安全。

3 个答案:

答案 0 :(得分:2)

这是处理POST变量的非常错误的方式。 在很多方面都错了。

当然这不安全。

取决于您在查询中使用POST数据的方式,此代码可以更正,或者可能无法使用且不安全。

巴马尔说,你应该使用准备好的陈述。如果您还有插入数据的预准备语句,那就更好了。

答案 1 :(得分:0)

这应该是安全的。

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

答案 2 :(得分:-2)

试试这个

$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_DATA值,而不是在任何地方使用$_POST