[請益] 請教INSERT values的變數問題

看板PHP作者 (...........)時間9年前 (2016/01/28 02:53), 編輯推噓0(0013)
留言13則, 3人參與, 最新討論串1/1
最近開始學習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 感激! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.182.180.216 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1453920825.A.39A.html

01/28 07:40, , 1F
用雙引號包作字串,裡面單引號對php而言都是字,第二
01/28 07:40, 1F

01/28 07:40, , 2F
例多個雙引號是多個字串,用.連接,單引號是給sql用的
01/28 07:40, 2F

01/28 07:40, , 3F
字串符號
01/28 07:40, 3F

01/28 07:46, , 4F
第一例雙引號字串內雖可直接嵌入變數,建議還是以{}包
01/28 07:46, 4F

01/28 07:46, , 5F
住變數,未加單雙引號會視為常數,有些環境未定義常數
01/28 07:46, 5F

01/28 07:46, , 6F
會直接當字串,有些環境則會報錯
01/28 07:46, 6F

01/28 11:07, , 7F
寫 ... VALUES ( '{$_POST['field']}' 就不會有問題了
01/28 11:07, 7F

01/28 11:08, , 8F
第一個寫法是錯的 陣列項目還是字串 一樣需要引號
01/28 11:08, 8F

01/28 11:09, , 9F
不會錯只是運氣好。
01/28 11:09, 9F

01/28 11:10, , 10F
第二個我稱為整人
01/28 11:10, 10F

01/29 02:50, , 11F
喔喔!所以第二例其實只是單純的雙引號字串+連結號+變數
01/29 02:50, 11F

01/29 02:52, , 12F
是我會錯意以為那邊的雙引號跟連結符號有成對的意義…
01/29 02:52, 12F

01/29 02:53, , 13F
謝謝兩位大大的說明!直接改M大的寫法了,清楚很多
01/29 02:53, 13F
文章代碼(AID): #1MgH8vEQ (PHP)
文章代碼(AID): #1MgH8vEQ (PHP)