您好我有以下查詢使用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