我需要了解这段代码

时间:2013-10-30 00:00:58

标签: php mysql function printf

我在网上找到了这个代码,我想了解它。我已经阅读了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返回一个格式化的字符串,删除字符串引号''?

1 个答案:

答案 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”插入到查询中并执行查询。

相关问题