0

我有以下代码来转义发布的数据:

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?

4

1 回答 1

1

您可以使用use关键字。

list($bk, $ad, $ti, $ta, $de) = array_map(function ($x) use ($dbc) {
    return mysqli_real_escape_string($dbc, $x);
}, $trimmed_post);

但老实说,您应该使用Prepared Statements

于 2012-07-28T22:20:05.060 回答