我有一段代碼,我不斷收到語法錯誤的代碼像帖:什麼是「」實際上是在PHP語法意味着
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
現在,當我重新格式化爲:
$query ="SELECT * from `jos_menu` where `id` = ".$parent;
這就是當我刪除:'\「 它工作正常。所以,我只是想知道,什麼是(「\」)實際做???
我有一段代碼,我不斷收到語法錯誤的代碼像帖:什麼是「」實際上是在PHP語法意味着
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
現在,當我重新格式化爲:
$query ="SELECT * from `jos_menu` where `id` = ".$parent;
這就是當我刪除:'\「 它工作正常。所以,我只是想知道,什麼是(「\」)實際做???
與
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
唯一的問題是,你錯過了一些'
:
$query ="SELECT * from `jos_menu` where `id` = ".'\"'.$parent.'\"';
在PHP中,一個字符串可以是:
$var = 'This is a string';
或者
$var = "This is a string";
如果你想要把"
,你已經開始"
在字符串中,你需要告訴PHP,你不希望你的第二個"
結束字符串,但使用的字符作爲"
字符串的一部分本身。這是\"
所做的。它告訴PHP,不要給"
字符有任何特殊含義;因爲通常如果你用"
開始字符串,下一個"
會結束字符串。
\
手段刪除任何「特殊」,意味着下一個字符
如果\
之後的字符將有特殊的含義裏,才能工作。一些例子:我們
假設要打印Hello "World". I am a string!
:
$var = "Hello "World". I am a string!";
在這個例子中,我們都會有錯誤的。由於我們以"
開始字符串,因此下一個"
將關閉字符串。那麼PHP的想法:
"
開始串的字符串變量的Hello
一部分。"
嘿,因爲我看到字符串是從"
開始的,這意味着它的結束!World"
< - 錯誤停止處理並拋出錯誤。
但是,如果我們寫:
$var = "Hello \"World\". I am a string!";
現在,PHP認爲:
"
字符串的開始字符串變量\
啊Hello
部分,沒關係,下一個我應該刪除任何特殊含義的字符"
好的,這是\
之後,所以我只是正常使用它,作爲"
。串\
奧凱的World
部分,下一個字符我將刪除任何特殊含義"
現在,這是一個正常的"
. I am a string!
- 字符串變量的一部分。"
啊!由於字符串是從"
開始的,所以這必定是結局。;
結束語句。希望能夠爲您澄清事情。
\
是轉義字符,這意味着下一個字符應該從字面上看,沒有照顧其特殊的意義。
在PHP中,如果字符串是用雙引號分隔的(並且開發人員只是想要一個前面的單引號),您通常會在字符串中看到'\"
。
它表示轉義字符下一個出現在字符後面的字符,將被視爲其當前形式。
您的查詢是不正確逃脫
$query ="SELECT * from `jos_menu` where `id` = ".'\".$parent.'\";
//^ You mismatched the quotes from here
一個正確轉義查詢應該是
$query ="SELECT * from `jos_menu` where `id` = \"$parent\"";
//^Note here " will printed as it is within the query
例如, 如果$parent
是2
,那麼查詢將
SELECT * from `jos_menu` where `id` = "2"
它工作正常,因爲你有一個數字VA lue - 所以mysql會自動將字符串轉換爲一個數字。所以,你得到2級不同的查詢(假設$parent = 42;
:
SELECT * from `jos_menu` where `id` = 42
VS
SELECT * from `jos_menu` where `id` = "42"
有幾件事情:
'\''
//輸出單'
\n
換行符,\t
tab charact er等反斜槓之後逃逸下一個字符;在您的例子,這會工作:
$query = "SELECT * from jos_menu where id = ".$parent;
但這樣會這樣:
$query = "SELECT * from jos_menu where id = $parent";
逃離時的報價,它使用的括號的類型而異。隨着雙括號,您可以包括可變權到字符串,只是要小心通過鍵訪問數組:
$var = "This \"works\" ".$fine.".";
$var = "This 'also' works just $fine.";
$var = "This $will['fail'].";
$var = "However, $this[will] work and so ".$will['this'].".";
規則同樣適用於單括號。
「*使用[準備語句](http://ca2.php.net/manual/en/book.pdo.php)*」,這是一個值得一提的遠處答案。 – Dan 2012-03-28 05:24:23