Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql\u real\u escape\u字符串与mysql\u escape\u字符串与其他函数_Php_Mysql - Fatal编程技术网

Php mysql\u real\u escape\u字符串与mysql\u escape\u字符串与其他函数

Php mysql\u real\u escape\u字符串与mysql\u escape\u字符串与其他函数,php,mysql,Php,Mysql,我使用mysql\u real\u escape\u string来提高安全性。为了提高mysql的性能,我现在考虑更换它 我在中找到了关于mysql\u real\u escape\u string和mysql\u escape\u string的详细说明 我的问题是: 如果我使用持久连接并知道字符集(只有UTF-8),有没有办法用不使用mysql的东西替换mysql\u real\u escape\u string?首先,使用mysql\u query和相关函数停止。PHP5.5中不推荐使用

我使用
mysql\u real\u escape\u string
来提高安全性。为了提高mysql的性能,我现在考虑更换它

我在中找到了关于
mysql\u real\u escape\u string
mysql\u escape\u string
的详细说明

我的问题是:


如果我使用持久连接并知道字符集(只有UTF-8),有没有办法用不使用mysql的东西替换
mysql\u real\u escape\u string

首先,使用
mysql\u query
和相关函数停止。PHP5.5中不推荐使用它,使用时会产生警告,因为您根本不应该使用它

其次,始终使用
mysql\u real\u escape\u string
仅此即可转义您的值。别想尝试别的方法。这很难看,很烦人,而且只是不应该首先使用
mysql\u query
的众多原因之一。不要自己滚。不要寻找更快的替代品,因为没有安全的替代品

尽可能早地切换到。如果您的应用程序处于严重的年久失修状态,那么转换成本可能会很高,但是如果以严格的方式正确地应用,那么发生SQL注入错误的可能性几乎为零

若转义函数的性能有问题,我不知道你们在做什么,但你们可能做错了。这些通常接近于零成本,除非你真的在每页加载上百万个。呈现的查询的执行时间几乎总是比准备语句本身所需的时间长得多。


使用MySQLi库中的参数化查询;以前在转义例程中有一些bug,有些bug可能会再次出现。参数化查询非常非常难搞乱,因此您不太可能受到MySQL错误的影响。

不要使用任何错误。mysql的
mysql.*
函数将被删除。不建议编写新代码,因为它将在将来被删除。您不应该首先使用mysql_*()函数。切换到mysqli或PDO,并使用带有占位符的准备语句。99%的情况下,你甚至不需要自己去任何地方转义东西。你不会用mysql\u real\u escape\u字符串优化mysql查询。如果要优化,请查看mysql表。设置正确的索引并查看您的查询。我知道PHP5.5中不推荐使用,但它是一个流量负载很高的大型应用程序。现在绝对不能重写到MySQLi,这将在将来的版本中完成。您询问的问题可能是个人问题。我怀疑在这里公开询问是否有任何用处。我建议你打电话给Oracle或一家独立咨询公司的mysql专业支持人员,让他们回答你所有的小问题,甚至用你能理解的语言解释所有这些问题背后的源代码。这将有助于你做出(个人)决定(一家专业咨询公司很可能会拒绝提出很多建议)。
mysqli
与PDO相比是垃圾,但它比yeolde
mysql\u query
@tadman:克服它吧。它非常好,比PDO做得更多,甚至在PHP5.4中有迭代器。那么,它是垃圾的地方到底有什么区别呢?(并不是说你应该喜欢它,有理由使用其中一个,但“垃圾”是完全错误的)。它在实践中同样有效,但PDO支持命名占位符,这使审核语句变得非常容易,避免了绑定调用顺序混乱的问题<如果PDO不可用,code>mysqli是一个很好的后备方案,但在其他情况下,它并没有明显的优势。