MySQL查询中的“。$ string。”和'$ string'之间有什么不同

时间:2013-01-28 19:09:02

标签: mysql

'".$string."''$string'

下面的两个查询之间有什么不同
SELECT * FROM users WHERE UserName='".$USERNAME."' AND Pass='".$PASS."'
/* AND */
SELECT * FROM users WHERE UserName='$USERNAME' AND Pass='$PASS'

如果不同,安全性会更好吗? 字符串始终在输入时保护,但仅适用于上述不同的

修改 我在PHP JUST上使用上面的查询并需要它

2 个答案:

答案 0 :(得分:3)

在PHP中,至少,两者之间绝对没有区别 - 它们完全相同。两者都同样容易受到SQL注入的攻击。<​​/ p>

答案 1 :(得分:2)

在你的情况下,它们之间没有区别。

但如果您连接的字符串不包含特殊字符(例如'),您会发现不同之处:

$b = 'b';
$string = "a" . $b . "c";

不等于:

$b = 'b';
$string = "a$bc";

因为PHP会查找$bc变量。但这相当于:

$b = 'b';
$string = "a{$b}c";

除了你的例子相当于:

SELECT * FROM users WHERE UserName='{$USERNAME}' AND Pass='{$PASS}'

但请注意,单引号字符串:

$b = 'b';
$string = 'a{$b}c';

将被视为a{$b}c

最后,正如@duskwuff警告的那样,你应该知道sql injections