PHP mysqli_real_escape_string参数

时间:2016-01-20 11:45:28

标签: php mysqli

我不是问如何使用该功能。

我知道函数mysqli_real_escape_string是关于什么或如何使用它,但我想问一下,为什么它的第一个参数需要引用mysqli连接?

以下是一些猜测,但我不知道我是否猜对了:

  • 该函数是否触发对数据库连接的任何调用,以便它需要连接以使用?
  • 转义字符串
  • 这是PHP实现中的一些技术限制吗?
  • 或任何其他原因?

这个问题令我感到不安,因为我的软件中有多线程,我有一个接受字符串查询作为参数的函数,并将查询推送到另一个线程执行,所以我无法获得MySQLi的实例使用。

转义查询中的字符串

2 个答案:

答案 0 :(得分:2)

来自http://php.net/manual/de/mysqli.real-escape-string.php:     mysqli :: real_escape_string - mysqli_real_escape_string - 转义字符串中的特殊字符以用于SQL语句,考虑连接的当前字符集

所以简而言之:该函数必须知道你的连接使用什么字符集。

答案 1 :(得分:1)

Alternative to mysql_real_escape_string without connecting to DB

这基本上解释了原因。必须知道MySQL连接使用的char集。如果不这样做,则可能会进行多字节SQL注入,具体取决于您的代码。无论如何,除非你编写自己的函数,否则你需要使用MySQL实例。