欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

刚才搜了一下,好像都挺复杂的。

程序员文章站 2022-05-15 18:28:55
...
我说一下我的想法:
首先不知道MySQL是不是所有类型的数据都可以加上单引号,我刚才试了一下,在整数左右加上单引号好像是没有问题。
如果确实任何类型的数据都可以加单引号的话,那么就在生成MySQL语句的时候为任何数据都加上单引号,然后使用mysql_escape_string将接收到的字符中的所有特殊字符转义。这样就可以将接收到的字符串完全“限制”在单引号之间了。

但是就算这样好像也是不能一劳永逸,因为类似like子句后面的字符串中的转义和正常的字符串好像是不一样的。另外如果AMP中任何一个的更新涉及到转义的话,可能都会出现问题。这两个问题有没有一劳永逸地解决的方法?还有没有其他的问题?

其他的数据库所有类型的数据都可以加单引号么?

回复讨论(解决方案)

对于 mysql 自然是没有问题的
like子句后面的字符串中的转义(对%、?)与转义单引号没有任何关系

如果要兼容其他数据库,那么你应该使用 PDO 来操作数据库。PDO::quote 就是用于转义的(不同的数据库的转义符也是不一样的),而 PDO::prepare 更可以做到不需要显式的转义