您好我有以下问题:
$sql = "update zzz_users set password = "'".$encrypted."' where username = '".$email."'";
CustomQuery($sql);
我只是不能让concat正确,有人可以告诉我该怎么做
答案 0 :(得分:0)
正确的查询是:
$sql = "update zzz_users set password = '" . $encrypted . "' where username = '" . $email . "'";
答案 1 :(得分:0)
这里错误得多,而不是连接正确。
首先,如果您只是尝试将变量放入PHP中的字符串中,请考虑使用双引号并将变量直接放入字符串中:
$sql = "UPDATE `zzz_users` SET `password` = $encrypted WHERE `username` = $email";
在这种情况下,不需要所有字符串的启动和停止。
然而,由于SQL Injection attacks,你在这里做的事情非常危险。您应该明确不将变量直接放入SQL命令中。
执行此操作的最佳方法是使用知道如何接受格式化字符串并为您创建安全SQL
的库。例如,MeerkoDB之类的内容可以让您像这样编写SQL
语句:
DB::query("UPDATE `zzz_users` SET `password`=%s WHERE `username`=%s", $encrypted, $email);
这实际上是安全的,因为它将确保正确转义SQL,从而防止SQL注入攻击。当然,您可以自己进行转义,但使用完善的库(这里有许多免费/开源和商业/专有产品)几乎总是更好的主意。
答案 2 :(得分:-1)
"
之后有password =
太多了。您应该在将字符串写入数据库之前将其转义,否则可能会出现SQL注入问题。
$sql = "update zzz_users set password = '" .mysql_real_escape_string($encrypted). "' where username = '" .mysql_real_escape_string($email). "'";
CustomQuery($sql);