Php 为什么mysqli\u real\u escape\u字符串将连接对象作为第一个参数

Php 为什么mysqli\u real\u escape\u字符串将连接对象作为第一个参数,php,mysql,mysqli,Php,Mysql,Mysqli,我在PHP中使用MYSQLI函数已经很长时间了。 我总是问我同样的问题: 为什么函数mysqli\u real\u escape\u string在第一个参数中需要连接?没道理!这只是一个函数来替换引号 你知道为什么吗?mysqli\u real\u escape\u string必须知道连接的字符集,以便它能够正确地转义特殊字符。如果使用多字节集,那么mysqli必须知道。否则的话。有关更多详细信息,请参阅 但是,不要使用它!使用 你不需要读太多的书才能得到答案,但你必须阅读,而且——你的问题

我在PHP中使用MYSQLI函数已经很长时间了。 我总是问我同样的问题: 为什么函数
mysqli\u real\u escape\u string
在第一个参数中需要连接?没道理!这只是一个函数来替换引号


你知道为什么吗?

mysqli\u real\u escape\u string必须知道连接的字符集,以便它能够正确地转义特殊字符。如果使用多字节集,那么mysqli必须知道。否则的话。有关更多详细信息,请参阅


但是,不要使用它!使用

你不需要读太多的书才能得到答案,但你必须阅读,而且——你的问题太广泛了,需要更多的研究来回答你的问题。这个决定是由PHP.net的开发人员以及参与MySQLi开发的其他工作人员做出的。所以,问问他们,谢谢你,莱根达里奥。我知道这是一个不好的做法,但是,如果我需要改变来准备查询,我应该在这个网站上改变很多行。Prepare querys仅在POONo中可用,而不是。即使在mysqliBut中,也可以使用prepared语句,因为这不是使用函数的方式。意思是,你应该这样做:
$foo->prepare()
和blablablabla。。。您没有办法将其用作:mysqli_查询(“从x中选择x,其中x=“.mysqli_prepare($foo));您不是在转义数据,而是在绑定数据。这是最大的变化!确切地我在我的oun项目中使用POO-MySQL。但是那样的话,我不能。在这里,我们可以检查我们不能仅使用函数在MySQLi扩展中使用Prepare。在中查找“API支持客户端准备的语句”