2010-01-30 43 views
3

Latelly我見過很多的封裝內{} SQL值,例如PHP/MySQL的問題:MySQL括號?

SELECT * FROM table WHERE field LIKE '{$value}'; 

是什麼回事?它甚至有效嗎?爲什麼這麼多人使用這個奇怪的(至少對我來說)語法?

+0

該示例中的{}是不必要的 – Erik 2010-01-30 14:33:49

回答

7

另一個很好的例子,從php.net

複合物(花)語法

這不叫複雜,因爲 語法複雜,但因爲它 允許使用複雜的 表達式。

事實上,命名空間 中的任何值都可以包含在具有此 語法的字符串中。簡單地寫出表達式 與在字符串外部出現 的方式相同,然後將它包裝在{和}中,其中包含 。由於{不能被 轉義,所以當$ { }跟在{後面時,此語法將僅被識別爲 。使用{\ $獲得 文字{$。

6

那些被用來消除變量名,如果您使用的是雙引號的字符串,例如內的陣列絕對必需的:

$SQL = "Select * FROM table WHERE field LIKE '{$value[5]}'"; 

不會沒有括號工作。

下面是從PHP.net

$beer = 'Heineken'; 
echo "$beer's taste is great"; // works; "'" is an invalid character for variable names 
echo "He drank some $beers"; // won't work; 's' is a valid character for variable names but the variable is "$beer" 
echo "He drank some ${beer}s"; // works 
echo "He drank some {$beer}s"; // works 

http://php.net/manual/en/language.types.string.php