{}如何在PHP中影响MySQL查询?
以下2个查询有什么区别?{}如何在PHP中影响MySQL查询?
mysql_query("UPDATE table SET name = '$name'");
mysql_query("UPDATE table SET name = '{$name}'");
在SQL方面,绝对没有区别:两个查询完全一样。
(您可以检查通过回声-ING它们)
{$variable}
是$variable
更完整的语法,即允许使用:
"this is some {$variable}s"
"{$object->data}"
"{$array['data']}"
"{$array['data']->obj->plop['test']}"
欲了解更多信息,请阅读说明书的Variable parsing/Complex (curly) syntax部分(引用了几位):
这不叫复杂,因为 语法复杂,而是因为它 允许使用复杂的 表达式。
任何标量变量,数组元素或 带有字符串的对象属性 表示可以通过 包含此语法。
只需将 表达式与 出现在字符串外部的方式相同,然后 将其包装在{
和}
中。
不错的完整答案! – Treffynnon 2011-03-20 18:24:36
大括号“转义”PHP变量并且不传递给MySQL。用一个简单的变量如$name
它并没有什么区别,但是它有一些像$user['name']
这样的东西。所以你在问题中发布的两个查询之间没有什么不同。
该查询可以,如果你想通过单一的变量被使用:
mysql_query("UPDATE table SET name = '$name'");
这可以如果从数组的特定索引传递的值来使用。
mysql_query("UPDATE table SET name = '{$1}'",$name);
顺便说一句,你的两个查询也都是正确的。
请注意,您可以[将行格式化为代码](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)缩进四个空格。编辑器工具栏中的“{}”按钮可以为您做到这一点。编辑你的答案并尝试一下。单击编辑器工具栏中的橙色问号以获取更多信息和格式化提示。 – outis 2011-03-20 18:47:21
我还没有遇到使用大括号的SQL语法。 – 2011-03-20 18:19:48
示例代码可能容易受到[SQL注入](http://unixwiz.net/techtips/sql-injection.html),这是一个非常严重的[安全风险](http://bobby-tables.com/ )。为了解决这个问题,从过时的mysql驱动程序切换到[PDO](http://php.net/PDO)并使用[prepared statements](http://www.php.net/PDO.prepared-statements)。如果您需要PDO教程,请尝试[“用PHP和PDO编写MySQL脚本”](http://www.kitebird.com/articles/php-pdo.html)。您保存的网站可能只是您自己的网站。 – outis 2011-03-20 18:23:02
大括号是一个PHP的东西,而不是MySQL的东西,FYI – 2011-03-20 18:26:36