CodeIgniter无法更新数据库
问题描述:
我的web应用程序中的用户登录有问题。我想要做的是更新特定用户的last_online_at
值,并在当前日期和时间之前将其登录到主页面。但是,它并没有像我期望的那样更新。CodeIgniter无法更新数据库
这里是我的代码:
...
if($result != FALSE){
$this->db->select('name');
$this->db->from('user_type');
$this->db->where("id ='" . $result[0]->user_type_id . "'");
$query = $this->db->get();
$session_data = array('first_name' => $result[0]->first_name,
'last_name' => $result[0]->last_name,
'username' => $result[0]->username,
'email' => $result[0]->email,
'id' => $result[0]->user_id,
'created_at' => date_parse($result[0]->created_at),
'recent_searches' => array(),
'food_tray' => array('Sample', 'Test', 'Qwerty'),
'logged_in' => TRUE,
'user_type' => $query->row()->name,
'user_type_id' => $result[0]->user_type_id,
'user_privileges' => array());
$this->session->set_userdata($session_data);
// LINE OF CODE RESPONSIBLE FOR UPDATING `last_online_at` VALUE //
$data = array('last_online_at' => date('Y-m-d H:i:s'));
$this->db->update('user', $data, 'id =' . $session_data['id']);
/////////////////////////////////////////////////////////////////
if($session_data['user_type'] == 'Customer'){
// REDIRECT TO USER PAGE
redirect(base_url() . "index.php/main");
}else if($session_data['user_type'] == 'Aggregator' ||
$session_data['user_type'] == 'Restaurant Owner' ||
$session_data['user_type'] == 'System Admin'){
// REDIRECT TO ADMIN DASHBOARD
redirect(base_url() . "index.php/admin?page_view=admin_dash");
}
}
你可以从给定的代码片段看,我用变量$session_data['id']
替换为参数值来更新查询的WHERE子句,这是在一个不起作用。但是当我将其替换为静态值时,例如1,它将平稳运行并根据给定的静态值更新记录
我是否在做这个错误?任何帮助,将不胜感激
答
所以首先你需要确保$session_data['id']
是有正确的价值。
所以才试图通过$session_data
echo "<pre>";
print_r($session_data);
echo "</pre>";
我也建议你使用CodeIgniter的日志用印刷物究竟包含。
log_message('debug', 'Your Session Data: '.print_r($session_data, TRUE));
log_message('debug', 'You can see last executed query also: '.print_r($this->db->last_query(), TRUE));
使用前请启用日志表单配置。
这种技术可以帮助您获取代码中发生的情况。
而对于更新,最后一次登录的日期试试这个:
$data = array('last_online_at' => date('Y-m-d H:i:s'));
$this->db->where('id', $session_data['id']);
$this->db->update('user', $data);
那么什么是变量$ a的var_dump session_data是什么样子的?使用var_dump($ session_data);然后你可以看到id是否被正确设置。 – TimBrownlaw
谢谢,这对我有用!我刚才观察到,当我var_dumped session_data时,事实证明id的值为'NULL',并且已经用正确的数组索引 – Chamber
取代了它非常好:)观察变量以验证它们正在做什么总是件好事你认为他们应该做... – TimBrownlaw