免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2123 | 回复: 6
打印 上一主题 下一主题

讨论一下一个PHP中SQL的常见问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-17 10:37 |只看该作者 |倒序浏览
一个常见(我常见)例子:

$sql = "SELECT mid,password,jur,realname,type FROM `advunion`.`template_members` WHERE username = '".$username."'";

类似这样的地方,我通常写成

$sql = "SELECT mid,password,jur,realname,type FROM `advunion`.`template_members` WHERE username = '$username'";

注意只有WHERE后面的不同,我想问为什么我见的大多数写法都是上面的,下面的写法有什么问题么?

如果没问题,为什么很多人喜欢上面的写法,不麻烦么?还容易出错。

论坛徽章:
0
2 [报告]
发表于 2006-11-17 11:39 |只看该作者
习惯问题吧

论坛徽章:
0
3 [报告]
发表于 2006-11-17 12:05 |只看该作者
偶比较喜欢上面的那种,因为当偶用多引号后,特别是嵌套的那种,下面的那种更容易错些,不过如果是LZ所示的,我也会用前面的那种,下面的那种就没有必要了,~~

论坛徽章:
0
4 [报告]
发表于 2006-11-17 12:26 |只看该作者
原帖由 geel 于 2006-11-17 11:39 发表
习惯问题吧


我问过一些人,他们说下面的会出错,我看是讹传讹诈~

原帖由 qiyu15555 于 2006-11-17 12:05 发表
偶比较喜欢上面的那种,因为当偶用多引号后,特别是嵌套的那种,下面的那种更容易错些,不过如果是LZ所示的,我也会用前面的那种,下面的那种就没有必要了,~~


不赌你后半句打错了 :)

论坛徽章:
0
5 [报告]
发表于 2006-11-17 12:44 |只看该作者
记得addslashes,或者mysql_escape_string,不管哪种都可以.

p.s:我喜欢下面的.简单方便些.

论坛徽章:
0
6 [报告]
发表于 2006-11-17 12:53 |只看该作者
原帖由 笨狼追风 于 2006-11-17 10:37 发表
$sql = "SELECT mid,password,jur,realname,type FROM `advunion`.`template_members` WHERE username = '".$username."'";

我就是用这个写法。我觉得和用什么文本编辑器有关,我用 editplus,这种写法可以在程序中一眼看到哪些是变量。如果全部写在引号中,那么颜色是一样的,要自己根据语法来找。
其他代码编写环境可能不需要这样。
对 SQL 语法本身没有任何影响。
另外,说下面那种会出错的话,对这种简单变量不会有影响,对数组变量的确会出错,要用花括号了,手册上的说法比我准确。

论坛徽章:
0
7 [报告]
发表于 2006-11-17 13:25 |只看该作者
我倒是觉得第一种会把人搞晕,而且看代码的时候不如第二种直观,总要不停的区分不同的引号
我用的最多的是prepare和placeholder。
$db->query("select  * from table where cond=?", array($cond));
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP