我的应用程序中“更改我的密码”功能已将所有用户的密码重置为相同的值。我恢复了一个备份,所以没有大问题,除了这个可怕的错误,除了我自己以外没有任何错误。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