$ salt2我正在登錄系統上工作,並且在更新我的鹽表時遇到問題。我不是sql的專家,但我知道我的方式。在MySQL中更新錯誤值
我的查詢來更新爲:
UPDATE hashTable SET `salt1` = 'salt1here' AND `salt2` = 'salt2here' WHERE `userID` = userID
userID
是一個整數值,所以我不需要引述。
當我更新該表salt1
設置爲值0
。我使用PHP創建我的SQL查詢,看起來像:
UPDATE hashTable SET `salt1` = '$salt1' AND `$salt2` = 'salt2here' WHERE `userID` = $userID
邊注:我知道SQL注入和我有保護 反對,在我的代碼。在這種情況下,我不需要這樣做,因爲 salt值是由腳本生成的,而用戶ID是由函數返回的值 。任何有我使用用戶輸入的地方我都會去掉 斜線,並有防止注射的方法。
對我來說,我的SQL查詢似乎是正確的,我知道我的價值觀是正確的,因爲這是一個動態創建的查詢看起來是這樣的:
UPDATE hashTable SET `salt1` = '9d6db1743e5e0cf1bb0e8cd799c0640231a10ec21e1612a6ed46e8ea16862835' AND `salt2` = '0824b2aac446ccfbd719645f84b13443cbcf59ee4e6dabace8c421ff6a8c6688' WHERE `userID` = 1374770432
我甚至進入,在直接到phpMyAdmin,它說0 rows affected
但仍將我的salt1
行更改爲0
。
我有點困惑,因爲它看起來像我正在做的一切正常,但顯然我不是。
請不要**不使用[正確的SQL轉義](http://bobby-tables.com/php)使用字符串插值插入數據。 – tadman
請再閱讀我的文章。我已經採取了預防措施,我沒有包括在代碼示例中。 –
如果它不是非常明顯,那麼你就是這麼做的,我的意思是'mysql_real_escape_string'就在你的查詢中間,那麼假設它被轉義是不安全的。如果你甚至錯過了其中一個*,你的整個應用程序就會被銷燬。這就是爲什麼強烈推薦使用參數化查詢的原因,與這種使用字符串連接組合的危險且易於出錯的方式相比。當你說你使用「strip sloses」時,我非常擔心,因爲這對SQL注入保護沒有任何作用。 – tadman