PHP的转义问题

PHP的转义问题
悬赏分:20 - 提问时间2008-9-2 21:12
/ 判断用户名是否存在
$q = mysql_query('select id from gb_users where username=\''.$_POST['username'].'\'');
$rs = mysql_fetch_array($q);
if ($rs['id']) {
echo '用户名被占用!<br>';


这个username=\''.$_POST['username'].'\''); 为啥要转义? $q = mysql_query('select id from gb_users where username='.$_POST['username']); 这样不行么?

到底啥时候用转义?

 

当要将一个有特殊用途的符号作为一个普通字符使用,或者要使用一个普通字符的特殊用法时,就要用转义。
比如 " 是用来限定字符串的,当一个字符串中有一个"时,就要用 \ 转义,就像 "abc"d" 这样,c 后面的 " ,我们想要让它作为一个普通字符双引号,这种表示是错误的,只有 abc 才被当作字符串处理,而后面的 d" 这部分无法处理,出现语法错误,正确的表示方法是 "abc\"d" 。同理,\r 不再是字母 r ,而是回车,\n 也不再是字母 n ,而是换行。

你的代码中,因为 sql 语句应该是
select id from gb_users where username='name'
这里应该有引号,而引号和双引号都是限定字符串的特殊符号,只有用 \ 转义,才能将其作为一个和=一样的普通符号包含在 sql 语句中。

转载于:https://www.cnblogs.com/figo-10/archive/2009/02/05/1384392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值