PHP中SQL语句中的字符串两端为什么要加单引号?

okproject 2009-08-14 10:01:45
这个是字符串两端没有加单引号的例子,但是也能正常执行:
$sql = "INSERT INTO `table` ( `row1`, `row2`, `row3`, `row4`, `row5`, `row6` ) VALUES ($val1, $val2, $val3, $val4, $val5, $val6)";
这个是字符串两端加了单引号的例子,效果一样:
$sql = "INSERT INTO `table` ( `row1`, `row2`, `row3`, `row4`, `row5`, `row6` ) VALUES ('$val1', '$val2', '$val3', '$val4', '$val5', '$val6')";
但是这两个语句的执行效率不加单引号的效率是加单引号效率的两倍,但是为什么大家都要在字符串变量两端加上单引号呢?
http://blog.huachen.me/php-sql-quote-string 是我做的一个测试这两个效率的文章,就是不知道为什么要加单引号,请高手出招,谢谢!
...全文
225 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
linearlarry 2009-08-14
都加上单引号是害怕万一字段里面有字符串,自己又没加单引号会出现SQL错误,干脆都加上单引号,让MySQL自己去做类型转换,后者在插入数据之前做了类型转换,当然没有前者的效率高

这是偷懒的做法,为了保证安全
回复
lincog007 2009-08-14
单引号会把里面的内容解析,就是不是当做字符串
回复
sunnyxuan1119 2009-08-14
[Quote=引用 5 楼 cuiyang000 的回复:]
楼主的结贴率是亮点
[/Quote]新人第一次发帖的街贴率就是这样啊~因为我就是~呵呵呵
来学习了~
回复
cuiyang000 2009-08-14
楼主的结贴率是亮点
回复
[Quote=引用 2 楼 linearlarry 的回复:]
都加上单引号是害怕万一字段里面有字符串,自己又没加单引号会出现SQL错误,干脆都加上单引号,让MySQL自己去做类型转换,后者在插入数据之前做了类型转换,当然没有前者的效率高

这是偷懒的做法,为了保证安全
[/Quote]
学习了!
回复
okproject 2009-08-14
[Quote=引用 2 楼 linearlarry 的回复:]
都加上单引号是害怕万一字段里面有字符串,自己又没加单引号会出现SQL错误,干脆都加上单引号,让MySQL自己去做类型转换,后者在插入数据之前做了类型转换,当然没有前者的效率高

这是偷懒的做法,为了保证安全
[/Quote]
可是第二个没有单引号的也能正常工作,当插入的变量是字符串也是不出错的呀。
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告