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