为了简化使用mysql_real_escape_string转义字符串的问题,我希望能够编写一个可以接受任意数量参数的函数并将函数应用于它们。
这样的事情:
function escape()
{
$args = func_get_args();
array_map('mysql_real_escape_string', $args);
}
正如您应该看到的,这将依赖于作为引用传递给此函数的参数。鉴于无法在PHP中完成调用时间引用,对此最好的解决方法是什么?由于我有一些非常少量的函数可以将特定的信息子集写入数据库,因此我真的需要像上面这样的通用函数,而不是在任何地方调用mysql_real_escape_string
。
我的测试还表明传递给mysql_real_escape_string
的参数总是按值传递。因此,即使我可以获得对escape()
的引用,我的努力随后也会被破坏。有没有办法解决这个问题?
其他人必须有类似的用例,但解决办法可能就是直接调用该函数。至少我可以将mysql......
包装在一个名称较短的函数中,以保持代码更清晰。这可能只是PHP无法传递指针的情况。
答案 0 :(得分:1)
简短的回答是,它并不漂亮。
答案很长:
function escape_all(array $args) {
foreach($args as &$arg) {
$arg = mysql_real_escape_string($arg);
}
}
escape_all(array(&$foo, &$bar));