[請益] 請教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