MYSQL命令和编码

时间:2015-10-14 19:26:47

标签: mysql encoding

我将使用PhP符号表示变量,以简化生活。

假设数据库是UTF-8,客户端设置为UTF-8。

问题有两个方面。知道'(引用)的ASCII为39十进制:

客户端     当使用诸如 real_escape_string()之类的函数对查询变量$ title进行转义时,该函数是否会单独转义所有值为39的字节?或者它会看到值39的字节是否是UTF-8符号的一部分?

服务器端

SELECT * from STORIES WHERE title = 'Hello'

MYSQL假设查询编码是什么?这包括部分:

SELECT * from STORIES WHERE title = '

然后,如果$ filteredTitle恰好有一个字节39,它是UTF-8符号的一部分,那么MYSQL如何知道它不是引用?

1 个答案:

答案 0 :(得分:0)

让我们看两个问题。

  1. 提供SELECT语句时,字符串必须"转义"。否则,引号内的引号会出现语法问题。特别是'"\必须以反斜杠开头,以避免混淆。 mysqli_real_escape_string()提供该功能。 (不要使用mysql_real_escape_string(),它属于已弃用的mysql_* API。)否"取消转义" SELECT字符串时需要。

  2. ascii撇号(十进制39,十六进制27,有时称为"单引号和#34;)在许多编程语言中通常用于引用字符串。一长串utf8"报价"可以找到here