mysqli_real_escape_string与array_map

5
我试图使用array_map和mysqli_real_escape_string来清理$_POST数据。
问题在于,当我在array_map内部使用$link变量时,它会以某种方式被转换为字符串。我很确定语法是正确的,但这个问题已经困扰我一段时间了。
下面是(简化后的)代码:
$link = mysqli_connect($host, $user, $password);
$row = array_map('mysqli_real_escape_string', $row, array($link, $row));

1
不要篡改 $_POST。也不要自己转义。你应该使用带有占位符的预处理语句,这样就不需要转义了。只有极少数情况下,你不能使用预处理语句并且必须自己转义值。 - Marc B
谢谢您的输入,我一直在考虑使用预处理语句,现在看来这正是我需要的推动力。 - Nate
1个回答

11

虽然大家都推荐使用PDO,但如果你想使用mysqli类来实现你想要的功能,你需要将mysqli链接和real_escape_string属性作为数组传递给array_map函数。

$link = mysqli_connect($host, $user, $password);
$escaped_row = array_map(array($link, 'real_escape_string'), $row);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接