我的SQL是这么写的insert into _user (username,password,memo) values ('$username','$password','$memo')
这么写没什么
但如果memo的文本中包含'号或')字时这条SQL岂不是就乱了?
我想问的就是怎么避免这种问题出现?
1楼
简单的方法之一:
在插入数据之前替换掉单引号换成全角的单引号。
e.g.:
$username=str_replace("'","'",$username);
2楼
不会吧,这么惨?那如果必须是半角的呢?
没有好的方法吗?
3楼
靠,怎么会乱呢?$memo只是一个变量而已,不管什么内容,都是完全添到数据库里了
4楼
这样写,是加入转义符 \ 的,这样插入数据库,用PHP再读出来显示在网页的时候不会有 \ 出现,如果在其它用途的话,可以读出来之后 stripslashes($var)来还原
$sql="insert into _user (username,password,memo) values ('$username','$password','".addslashes($memo).
"')"
另外,我无意中发现,PHP是可以自动在单引号或双引号中的字符串变量中的引号加转 义符的,你可以试试,
5楼
应该不会有什么问题。好多新闻标题里都有引号,正常使用
6楼
我KAO,果然自动添加了转义符,PHP真是TMD太爽了!
结帐