[请益] 请教INSERT values的变量问题

楼主: acidjazz (...........)   2016-01-28 02:53:41
最近开始学习php+mysql,碰到一个疑问
有一个简单的成绩输入例子查到有两种写法如下:
1.
mysql_query("INSERT INTO grade (name, eng) VALUES('$_POST[name]',
'$_POST[eng]');");
第一个例子把POST的变量用两个 单引号 '包起来,
原本$_POST['name']变成$_POST[name],请问为什么要把里面的引号拿掉才能成功呢
我原本是写:VALUES('$_POST['name']','$_POST['eng']')
结果就是失败了,查了一下才改成这两种例子的方法
目前学到都是$_POST['xx'] or $_POST["xx"],拿掉里面引号的原因是什么呢?
是因为一个值里面不能有两组单引号的关系吗
2.
mysql_query("INSERT INTO grade (name, eng) VALUES('".$_POST['name']."',
'".$_POST['eng']."');");
第二个例子保留原本变量的写法,但红色字是比较不解之处,
为什么变量除了单引号包住之外,里面又要包一层双引号与连结符号呢?
我知道一般双引号与连接符号的功能,但放在这边的用途是什么呢?
希望问题不会太笨,虽然知道写法,但不知道原因实在很难安心写下去orz
感激!
作者: xdraculax (首席怪叔叔)   2016-01-28 07:40:00
用双引号包作字串,里面单引号对php而言都是字,第二例多个双引号是多个字串,用.连接,单引号是给sql用的字串符号第一例双引号字串内虽可直接嵌入变量,建议还是以{}包住变量,未加单双引号会视为常数,有些环境未定义常数会直接当字串,有些环境则会报错
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-01-28 11:07:00
写 ... VALUES ( '{$_POST['field']}' 就不会有问题了第一个写法是错的 阵列项目还是字串 一样需要引号不会错只是运气好。第二个我称为整人
楼主: acidjazz (...........)   2016-01-29 02:50:00
喔喔!所以第二例其实只是单纯的双引号字串+连结号+变量是我会错意以为那边的双引号跟连结符号有成对的意义…谢谢两位大大的说明!直接改M大的写法了,清楚很多

Links booklink

Contact Us: admin [ a t ] ucptt.com