使用库MySQLi的real_escape_string为静态函数(Using MySQLi'

2019-07-03 22:27发布

我想知道如果我可以(用real_escape_string)无需先创建一个对象实例的功能应用于逃避字符串?

也就是说,我们可以这样做:

$database = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);
$database->real_escape_string($query);
$database->query($query)

等等

但是,我想要我的应用程序内的一致性做的,是有一个大多是静态的数据库类,这是库MySQLi类的一个扩展,这样我就可以拨打电话: database::real_escape_string($query) ,静态方法。

我也知道我可以建立其手动逃逸的字符串,不MySQL的函数。

Answer 1:

最简洁的答案是不。

在长回答:嗯,这是不推荐,原因很简单 - MySQLi的真实逃生考虑字符编码,作为某一种SQL注入技术使用和字符编码的滥用绕过常用的过滤器。 这就需要代码知道两个始发(PHP)的字符集和接收(MySQL的)字符集的配置。 这就是为什么它不能被静态调用(而不能叫,直到你有服务器的有效链接)!

我也想避免它的程序版本,它只是做了“字符集”位通过有效地采取的最后一个服务器已连接的,可一旦你处理多个数据库导致好玩的东西在引擎盖同时连接。



Answer 2:

mysql_real_escape_string()可以帮助你,但你必须建立在两个版本的连接。 这样做的原因是,应用程序不知道如何逃生数据库字符串。 当连接到数据库的功能要求数据库如何逃跑,如何逃生。



文章来源: Using MySQLi's real_escape_string as a static function