Heim  >  Artikel  >  Backend-Entwicklung  >  刚才搜了一下,好像都挺复杂的。

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

WBOY
WBOYOriginal
2016-06-23 14:12:37991Durchsuche


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

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

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


回复讨论(解决方案)

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

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn