【问题标题】:codeigniter active record update does not workcodeigniter 活动记录更新不起作用
【发布时间】:2014-06-18 20:40:28
【问题描述】:

尝试为所有会话 ID 更新会话表中的会话数据,但已经挣扎了几个小时。

$_data = array('sess_data'  => 'abc');
$this->db->where('sess_id', $_sid);
$this->db->update($_table, $_data);

下面的代码给我一个值 1,表示上面的代码确实有效。

$this->db->affected_rows();  

但是当我通过 phpmyadmin 查看数据库时,没有任何更新。没有生成 mysql 错误消息。请告知如何进一步进行。

编辑

UPDATE `sessions` SET `sess_data` = 'abc' WHERE `sess_id` = 'skavnhgk84712r06npem76snu2'  

更新:

奇怪,今天我又添加了 2 条会话记录,它只更新了第 2 条和第 3 条记录,第 1 条记录没有改变。为什么会这样?我正在使用 foreach 循环,下面是生成的查询。

UPDATE `sessions` SET `sess_data` = 'ABC' WHERE `sess_id` = 'skavnhgk84712r06npem76snu2'  no success!  
UPDATE `sessions` SET `sess_data` = 'ABC' WHERE `sess_id` = 'skavnhgk84712r06npem76snu3'  success  
UPDATE `sessions` SET `sess_data` = 'ABC' WHERE `sess_id` = 'skavnhgk84712r06npem76snu4'  success  

【问题讨论】:

  • 你能回显 $_sid 的值并将其与你的数据库进行比较吗?
  • 我将上面的代码更改为从 sess_id = $_sid 的表中选择 *,它给了我正确的结果。所以我相信 $_sid 的值是可以的。
  • 使用$this->db->last_query()查看生成的查询。
  • 为什么不使用 : $this->db->update($_table, $_data, array('sess_id' => $_sid)) ?
  • 我编辑了我的帖子以添加到生成的最后一个查询中。谢谢文森特,但它并没有解决我的问题。

标签: php codeigniter activerecord


【解决方案1】:

我认为这应该可行。

$data = array(
           'title' => $title,
           'name' => $name,
           'date' => $date
        );
$this->db->where('id', $id);
$this->db->update('mytable', $data); 

如需更多参考,请访问此网站:

http://ellislab.com/codeigniter/user-guide/database/active_record.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 2011-09-29
    相关资源
    最近更新 更多