1

我有一个 MySQL 结果,我想使用 PHP 安全地输出,即将特殊字符转换<&lt;.

filter_var_array 工作正常,除了NULL值变成空字符串''

我仍然希望它们为 NULL 以反映 MySQL 值并进行测试is_null()等。

$sql_rows = filter_var_array($sql_rows, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
foreach ($sql_rows as $sql_row) {
    print '<li>' . $sql_row['name'] . '</li>';
}

有什么方便的方法来实现这一点吗?

4

2 回答 2

1

根据我的经验,当从 MySQL 中选择 NULL 值时,PHP 会将其解释为空白字符。我只会在一个循环中处理和输出每一行;您将对每个值发生的事情有更多的控制权,并且效率会更高。

foreach($sql_rows as $sql_row)
{
    $output = "<li>";

    if(!empty($sql_row['name']))
    {
        $output .= htmlspecialchars($sql_row['name'], ENT_QUOTES);
    }
    else
    {
        $output .= "<strong>NULL</strong>";
    }

    $output .= "</li>";

    echo $output;
}
于 2012-07-15T22:55:10.693 回答
1
$sql_rows = array_map(function($val){
    return is_null($val) ? null : filter_var($val, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
}, $sql_rows);
于 2012-07-15T23:09:33.027 回答