我在网上找到了这个代码,我想了解它。我已经阅读了PHP文档,但我发现Stack Overflow社区提供了更好的解释:
function mysql_safe_query($query) {
$args = array_slice(func_get_args(),1);
$args = array_map('mysql_safe_string',$args);
return mysql_query(vsprintf($query,$args));
}
我认为该函数不是内置的PHP函数。 array_slice
返回数组func_get_args中的一系列元素,偏移量为1.
我查了func_get_args
并且它应该返回给定元素的副本(数组?对象)?我猜vsprintf
返回一个格式化的字符串,删除字符串引号''?
答案 0 :(得分:1)
正如函数名称所示,它应该可以帮助您执行更安全的MySQL查询。但是,它基于mysql_query
,不推荐使用。相反,您应该查看PDO或至少MySQLi。
即使方法签名表明该方法只接受一个参数,您实际上可以传递任意数量的参数,例如。
mysql_safe_query("SELECT * FROM users WHERE gender = '%s' AND city = '%s'",
"Female", "Denver");
第一部分,即查询,将在$query
中。所有参数都可以使用func_get_args()
访问。我们将数组切片以忽略查询部分,因此我们将留下包含“Female”和“Denver”的数组$args
。之后,所有参数都通过mysql_safe_string
过滤,即{“1}}在”女性“和”丹佛“上执行。最后,将“Female”和“Denver”插入到查询中并执行查询。