为什么mysql_real_escape_string中有资源?

时间:2010-07-02 18:52:41

标签: php mysql sql-injection

我一直在想最长的时间为什么我真的需要SQL连接的实时资源才能使用mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )

这个功能不是简单地逃避数据吗?什么是连接点?我想使用没有连接的功能,我正在辩论创建一个没有权限的帐户,所以我可以这样做。

我调用包装函数runSQL(user, statement)并返回一个数据或布尔状态的数组。

我一直在考虑制作这个runSQL(user, statement, arguments-and-validation-data)

我只想要一个理由。我无法在手册页上找到“为什么”。

3 个答案:

答案 0 :(得分:5)

正确的转义部分取决于当前连接的字符集,因此需要知道有关实时连接的信息。


重新评论,这是PHP函数使用的MySQL C API手册的链接:

http://dev.mysql.com/doc/refman/5.1/en/mysql-real-escape-string.html

它说:

  

请注意,mysql必须是有效的开放式连接。这是必需的,因为转义取决于服务器使用的字符集。

答案 1 :(得分:4)

来自mysql_real_escape_string的文档 - http://php.net/manual/en/function.mysql-real-escape-string.php

  

转义中的特殊字符   unescaped_string,考虑到   当前的字符集   连接,以便安全放置   它在mysql_query()

答案 2 :(得分:0)

一次可以打开多个MySQL连接。通常省略资源参数,因为在脚本中只使用1个MySQL连接,并且它默认为最后打开的连接。