使用mysql_real_escape_string()时,为什么需要链接标识符作为输入。我知道该函数应该用于MySQL查询,但该函数实际上只是一个字符串操作。mysql_real_escape_string()中链接标识符的重要性
3
A
回答
6
逃逸的unescaped_string特殊字符,并考虑到当前字符集的连接,从而可以安全地将其用于mysql_query()。如果要插入二进制数据,则必须使用此功能。
和:
如果没有指定链路标识符,则假定由mysql_connect()打开的最后一个环节。如果没有找到这样的链接,它会尝试创建一个,就好像调用mysql_connect()时没有参数一样。如果未找到或建立连接,则会生成E_WARNING级别错误。
需要连接来确定字符集。
1
逃逸的unescaped_string特殊字符,考虑到当前字符集的连接,这样可以安全地将其用于mysql_query()。
3
具有http://ilia.ws/archives/103-mysql_real_escape_string-versus-Prepared-Statements.html
读取例如,如果正在使用GBK字符集,也不会转换无效的多字节序列0xbf27(¿“)成0xbf5c27(¿\”或在GBK单个有效的多字节字符,后跟单引号)。为了确定正确的转义方法mysql_real_escape_string()需要知道使用的字符集,通常从数据库连接游标中检索。
也许是这篇文章的后果,但很明显在函数mysql_set_charset()已被添加到mysql扩展。 charset是mysql连接(资源)的一个属性。
如果你有多个连接,你应该将它们传递给mysql_real_escape_string()(并且总是使用mysql_set_charset()而不是SET NAMES)。
如果您没有传递连接资源,该函数将使用脚本建立的最后一个连接。如果两个(或多个连接)的字符集不同,real_escape_string()的结果可能会被服务器错误地解释(期待另一个编码,因此有不同的转义规则)。
即使你只有一个连接(你可以绝对肯定地说,这将是如此,直到时间结束?),因此它并没有伤害,只是通过它总是。
相关问题
- 1. “捆绑标识符”的重要性
- 2. 是否符合508要求的链接的标题属性?
- 3. 用php标识pdf中的链接
- 4. 规范化链接标识
- 5. 重复的标识符'export ='
- 6. Typescript - 重复的标识符
- 7. 识别需要的链接库
- 8. 在链接列表中标识重复值C++
- 9. 创建符号链接以及如何在EngineYard中创建它的重要性
- 10. 在会话变量中传递mySQL链接标识符
- 11. Webpack重复标识符'PropertyKey'
- 12. 重复标识符离子
- 13. 在struts2的超链接标题属性中插入标签属性字符串
- 14. 标识中的字符标识
- 15. 当需要mysql_real_escape_string()时?
- 16. Prism实现中的接口重要性
- 17. 字符串标识要更新的iVar
- 18. 链接标题属性
- 19. 链接文字标识和范围
- 20. 单击链接后检测列标识
- 21. 正确处理mysql_XXXX默认链接标识符参数
- 22. TNS:无法解析连接标识符TNS:无法解析连接标识符
- 23. iCarousel上的重用标识符
- 24. 重复的标识符错误
- 25. ng服务后的重复标识符
- 26. '安全'替换重要的符号链接
- 27. 接受Scala标识符的解析器?
- 28. gcc:目标文件或库中的重复标识符
- 29. 在链接中标识URL的文件类型的Rails Helper
- 30. 需要标识符是什么意思?