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をラムダ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 に答える