您好我有以下查询使用CONCAT:如何在更新查询
$sql = "update zzz_users set password = "'".$encrypted."' where username = '".$email."'";
CustomQuery($sql);
而我只是不能得到CONCAT正确的,可能有人请告诉我该怎么办呢
您好我有以下查询使用CONCAT:如何在更新查询
$sql = "update zzz_users set password = "'".$encrypted."' where username = '".$email."'";
CustomQuery($sql);
而我只是不能得到CONCAT正确的,可能有人请告诉我该怎么办呢
正确的查询是:
$sql = "update zzz_users set password = '" . $encrypted . "' where username = '" . $email . "'";
有一个"
password =
后太多。在将它写入数据库之前,应该先将字符串转义出来,否则可能会导致SQL注入问题。
$sql = "update zzz_users set password = '" .mysql_real_escape_string($encrypted). "' where username = '" .mysql_real_escape_string($email). "'";
CustomQuery($sql);
Passowrd必须被散列,'_real_escape_string'不是正确的方法(它可能在这个var中被散列,我们不知道)。 'Mysql'扩展名已被弃用。 – panther 2015-02-08 18:33:17
这里还有很多错误比没有获得连接权。
首先,如果你只是试图把变量到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注入攻击。当然,你可以推出自己的逃跑游戏,但使用一个完善的图书馆(有许多免费/开源和商业/专有产品)几乎总是一个更好的主意。
请阅读豹的回答和意见。 – VeeeneX 2015-02-08 19:02:16
无法看到你在哪里使用concat? – Mihai 2015-02-08 18:25:57