我的應用程序中「更改我的密碼」功能已將所有用戶的密碼重置爲相同的值。我恢復了一個備份,所以沒有大問題,除了這個可怕的錯誤,除了我自己以外沒有任何錯誤。WHERE語句問題更新所有行
顯然這是由於UPDATE語句中的WHERE條件沒有值。這是通過CodeIgniter中的活動記錄查詢。爲了避免這個問題有到位的保障:
if(!is_numeric($userdata['client_id'])) die('could not retrieve user ID from session');
一個typeof($userdata['client_id'])
告訴我,這是一個「串」所以我is_numeric檢查應該工作的罰款。 $ userdata數組來自會話。
沒有client_id 0的用戶,他們都有一個數字值。
我認爲這可能是通過用戶訪問「更改密碼」頁面發生的,等待直到會議記錄X分鐘後提交表格。我自己嘗試過,它只是將它重定向回登錄頁面,因爲它應該。
我的WHERE語句嘗試將$userdata['client_id']
與client_id_fk值進行匹配。一個或兩個測試客戶端的client_id_fk爲NULL - 這樣的測試客戶端是否可以重置密碼導致了這種情況?
如果不是,我很難過。任何人?
我不知道是否以及如何client_id可以爲NULL,但我想通過其他錯誤是可能的。我添加了一個is_null檢查來確保。謝謝。 – stef 2010-09-27 11:20:27