1
30
由于使用此函数会导致mysql api调用,因此应该认为它比发出查询快得多。
在性能方面,确保脚本和MySQL服务器之间基于UTF-8的通信的最快方法是正确设置MySQL服务器。作为
反之
请注意在同一个MySQL服务器实例上运行的其他应用程序可能存在问题,并且需要一些其他字符集。 |
2
25
TLDR
这个答案强调了PHP的PDO库,因为它无处不在。 一个简短的提醒——mysql是一个客户机-服务器架构。这一点很重要,因为不仅有实际数据库所在的mysql服务器,而且还有单独的mysql客户机驱动程序,这是与mysql服务器对话的东西(它们是独立的实体)。你可以说MySQL客户机和PDO是混合在一起的。
当你使用
不要这样做很重要,因为如果客户端库不知道当前的字符集,它就不能正确地处理字符串。大多数常见的操作在客户机不知道正确的字符集的情况下都可以正常工作,但字符串转义是不可能的,例如
PDO::quote
. 您可能认为不需要担心这种手动的原始字符串转义,因为您使用的是准备好的语句,但事实是PDO的绝大多数用户:MySQL用户在不知情的情况下使用
emulated prepared statements
因为它已经是pdo:mysql驱动程序的默认设置很长时间了。模拟的准备语句不使用mysql api提供的真正的本机mysql准备语句;相反,php执行与调用
由于除非您知道正在使用的字符集,否则无法正确转义字符串,如果您通过
对于pdo mysql驱动程序,可以通过以下方式指定连接时的字符集: specifying it in the DSN . 如果您这样做,客户机库和服务器都将知道字符集,因此事情将按它们应该的方式工作。
但字符串转义不当并不是唯一的问题。例如,您也可能在使用中遇到问题
PDO::bindColumn
因为列名被指定为字符串,所以编码也很重要。例如,一个名为
|
3
9
对py不确定,但是php有
其中$link是用创建的连接
|
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |