What's之間的差時(使用{}花括號)和級聯(或點):差分構造SQL語句
$sql = "select * from {$table}";
和此:
$sql = "select * from ".$table;
有什麼區別嗎?
What's之間的差時(使用{}花括號)和級聯(或點):差分構造SQL語句
$sql = "select * from {$table}";
和此:
$sql = "select * from ".$table;
有什麼區別嗎?
沒有多少比一個其他的不同的使用級聯和一個沒有。
你也可以寫爲
$sql = "select * from $table";
您可以使用{}
字符串中的引用對象爲好。
如果表是一個名稱或數組
$sql = "select * from {$table->name}"; //works
$sql = "select * from $table->name"; //works too
$sql = "select * from $table->innerTable->table"; //doesn't work
$sql = "select * from {$table['name']}"; //works
$sql = "select * from $table['name']"; //breaks
我個人用它來增加可讀性,因爲我總是知道我指的是一個變量。
結果將是相同的,但當然,你做的兩個根本不同的事情:
第一個是variable parsing(僅適用於雙引號和定界符字符串),第二個是string concatenation。
+1的解釋 – AndersTornkvist 2011-05-15 12:08:32
正如前面提到的那樣,這兩個語句導致相同的字符串被分配給$ sql。不過,請注意使用單引號和串聯會更有效,因爲字符串並不需要通過PHP解析器解析:
$sql = 'select * from ' . $table;
http://php.net/manual/en/language.types.string。 php – Gazler 2011-05-15 11:14:56
區別在於你不能使用前者。 – NikiC 2011-05-15 11:20:35
一方面請注意:如果'$ table'包含用戶輸入,請不要忘記使用正確的轉義函數,並在變量周圍放置單引號以防止SQL注入。 – 2011-05-15 11:33:39