有关双引号字符串语法,请参见
http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing.
花括号用于复杂的变量表达式.它们由PHP解释,而不是由SQL接口解释.
$query = "SELECT * FROM users WHERE user='$_POST['username']' AND password='$_POST['password']'";
以上将导致解析错误.没有花括号,你必须写:
$query = "SELECT * FROM users WHERE user='$_POST[username]' AND password='$_POST[password]'";
注意缺少关键引号.这仅适用于简单的数组访问,以及简单的对象属性表达式.对于任何更复杂的东西,请使用花括号.
既然你知道这一点,做一个你永远不会这样做的小发誓.因为直接插入用户输入并不是一个好主意. http://bobby-tables.com/
但是为了给一个更复杂的卷曲字符串语法提供一个例子,这就是我要做的:
$query = "SELECT * FROM users WHERE user={$_POST->id->sql['username']}";
(有些内联过滤和引用.就像示例一样,不适用于默认的PHP设置.)