我有以下代码可以转义发布的数据:
if (isset($_POST['submitted'])) {
$trimmed_post = array_map('trim', $_POST);
$bk = mysqli_real_escape_string($dbc, $trimmed_post['bk_id']);
$ad = mysqli_real_escape_string($dbc, $trimmed_post['address']);
$ti = mysqli_real_escape_string($dbc, $trimmed_post['bkTitle']);
$ta = mysqli_real_escape_string($dbc, $trimmed_post['tags']);
$de = mysqli_real_escape_string($dbc, $trimmed_post['description']);
但我更愿意这样做-更加整洁:
list($bk, $ad, $ti, $ta, $de) = array_map(function ($x) {
return mysqli_real_escape_string($dbc, $x);
}, $trimmed_post);
我正在使用MySql 5.5.16,但它返回“未定义的变量:dbc”。
我怀疑这是一个“关闭”问题。如何将$ dbc传递给我的lambda pl?
最佳答案
您可以使用use
关键字。
list($bk, $ad, $ti, $ta, $de) = array_map(function ($x) use ($dbc) {
return mysqli_real_escape_string($dbc, $x);
}, $trimmed_post);
但老实说,您应该使用Prepared Statements。
关于php - 如何将连接对象传递给闭包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11705105/