-1

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

4

1 回答 1

1

正如函数名称所暗示的,它应该可以帮助您执行更安全的 MySQL 查询。但是,它基于mysql_query哪个已弃用。相反,您应该看一下PDO或至少MySQLi

即使方法签名表明该方法只接受一个参数,您实际上也可以传递任意数量的参数,例如

mysql_safe_query("SELECT * FROM users WHERE gender = '%s' AND city = '%s'",
  "Female", "Denver"); 

第一部分,查询,将在$query. 所有参数都可以使用func_get_args(). 我们将数组切片以忽略查询部分,因此我们将得到一个$args包含“Female”和“Denver”的数组。之后,所有参数都通过 过滤 mysql_safe_string,即mysql_safe_string在“Female”和“Denver”上执行。最后,将“Female”和“Denver”插入到查询中并执行查询。

于 2013-10-30T00:14:33.763 回答