首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP mysql中使用Curly Braces是什么用途?

在PHP mysql中使用Curly Braces是什么用途?
EN

Stack Overflow用户
提问于 2022-03-03 05:51:51
回答 1查看 163关注 0票数 -2

我在许多源代码中看到,开发人员在ex的用户输入变量上使用大括号:-

代码语言:javascript
复制
query("SELECT * FROM users WHERE email = '{$email}' AND password = '{$password}'");

我看到人们创建了两个文件(可能有一些原因),一个是使用以下查询:retrieve.php

query("SELECT * FROM users WHERE email = $email AND password = $password");

和其他带有此查询的文件:retrieve_safely.php (注意到文件名)

query("SELECT * FROM users WHERE email = '{$email}' AND password = '{$password}'");

这让我产生了疑问,这两者之间有什么区别呢?查询中大括号的确切用途是什么?它们是否用于防止SQL注入?如果是的话,那又如何呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-03 06:38:55

TL;DR:不,IT不会阻止SQL注入

大括号是将变量的内容注入字符串的一种方法。参考资料:https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.double

因此,这两个命令做的事情完全一样:

代码语言:javascript
复制
query("SELECT * FROM users WHERE email = $email AND password = $password");
query("SELECT * FROM users WHERE email = {$email} AND password = {$password}");

如果是一样的,那为什么还要用花括号呢?因为它是将对象的属性/数据成员注入字符串的一种方法:

代码语言:javascript
复制
query("SELECT * FROM users WHERE email = {$user->email} AND password = {$user->password}");

通过读取文件名retrieve.phpretrieve_safely.php,_safely文件中的变量有一个引号。

所以,,除非在retrieve_safely.php中的代码之前有某种输入清除,否则该文件并不比retrieve.php更安全

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71332933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档