php單雙引號對變量解析的影響以及php向mysql插入數據時的變量解析問題詳解

php單雙引號對變量解析的影響以及php向mysql插入數據時的變量解析問題詳解

該博客對php中echo輸出語句中單雙引號的使用區別給出了詳細解釋,並闡明瞭php向mysql寫入數據時變量解析的規範問題,如有歧義請及時指出。

  • echo語句中單雙引號的區別

我們在學習php時大概都遇到過這樣的問題,即經常見到代碼中使用echo語句時有時候使用單引號,有時候使用雙引號,那麼到底該使用哪個呢?它們又有什麼區別呢?
其實,大多數學過php的人都知道,在php中,被單引號引起來的變量不產生變量作用,而雙引號引起來的變量產生變量作用。簡而言之,單引號不能識別變量,而雙引號可以識別變量。如下驗證:
代碼演示

代碼中,我們聲明瞭一個變量$b,並分別使用雙引號和單引號對其進行echo輸出,結果顯示爲:
結果展示
從上圖結果中我們可以看出,雙引號引起來的變量產生了變量作用,輸出了變量$b的值,單引號引起來的變量沒有產生變量作用,而是直接講變量名作爲字符串輸出。

  • php向mysql插入數據時的變量解析問題詳解

說完了echo語句單雙引號的變量解析問題現在我們來說說php向mysql插入數據時的變量解析問題。
我們都知道,在mysql中使用sql語句例如查詢語句時,凡是遇到非int型的字段都要用單引號引起來,比如:select*from tablename where stu_name=’張三’;同樣的,我們在php代碼中想查詢數據庫數據時非int型的變量也要用單引號引起來,例如:
這裏寫圖片描述
看到這裏也許有人就會有疑問了,因爲我們上一個知識點裏面提到了,單引號不能解析變量,這段代碼這樣寫合理嗎?答案是合理,在echo語句中單引號不能產生變量作用是衆所周知的,這毋庸置疑,但是在php生成sql語句時,普通的非整型變量是可以直接放在單引號中的(博主認爲,這裏的單引號是sql中的單引號,而非php中的單引號,意義不同不能同日而語),所以說這種寫法是沒問題的。
但是如果在使用php操作數據庫時要匹配的是一個數組變量,不管字段是否爲整型,代碼都必須爲如下寫法:
這裏寫圖片描述
否則程序會報錯。
這種處理方式有兩種解釋:
第一:單引號不能解析出數組變量,所以必須先用雙引號將其解析出來,再用單引號引起來。(但是字符串連接符的存在就無法接受)
第二:單引號不能解析出數組變量,所以分別將變量前面的所有sql語句和變量後面的所有sql語句用雙引號引起來,再將這三部分用連接符連起來賦值給$query。(博主更傾向於這種解釋)
這裏寫圖片描述

發佈了29 篇原創文章 · 獲贊 57 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章