php - 大括号 {} 在 SQL 查询中做什么?

标签 php mysql

<分区>

例如,检查以下查询;

$query = "SELECT * FROM users WHERE user='{$_POST['username']}';  

有什么用?

在字符串上下文中,我确实理解它解决的问题。
我可以做类似的事情 $动物=“猫” echo "{$animal}s."//输出猫

但在我上面发布的 SQL 中,我就是不明白。 以下不是同样好吗?

$query = "SELECT * FROM users WHERE user='$_POST['username']' AND password='$_POST['password']'";  

那么,{ 和 } 在哪里方便使用?欣赏 SQL 上下文中的任何示例?

最佳答案

参见 http://www.php.net/manual/de/language.types.string.php#language.types.string.parsing用于双引号字符串语法。

花括号用于复杂的变量表达式。它们由 PHP 而不是 SQL 接口(interface)解释。

$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/

帮自己一个忙,使用PDO with prepared statements . 所以容易多了。


但要举一个更复杂的 curl 字符串语法的例子,这就是我要做的:

$query = "SELECT * FROM users WHERE user={$_POST->id->sql['username']}";

(进行一些内联​​过滤和引用。举个例子,不适用于默认的 PHP 设置。)

关于php - 大括号 {} 在 SQL 查询中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9104684/

相关文章:

php - Android + 网站/服务器上的 Facebook 身份验证

php - MYSQL AES_DECRYPT 错误

jquery - 从 Rails 的下拉菜单中选择项目后如何更新数据库字段?

php - 存储过程中 CONCAT AND LIKE 的 MySQL 语法问题

php - 如何使用 .htaccess 重定向除一个请求以外的所有请求?

php - 用 composer 安装 Slim3 beta?

php - 无法将数据插入 MySQL 数据库

php - cakephp 2.0 中的忘记密码功能

php - 事件 FOSUserBundle Symfony2 注册和登录

mysql - 如何自动清除 MySQL Workbench 中的输出?