用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7853|回复: 13
收起左侧

[数据库] update语句的一个超级费解的问题,拖了1个星期,help!

  [复制链接]
发表于 2010-10-10 00:29:09 | 显示全部楼层 |阅读模式
本帖最后由 a6798246 于 2010-10-10 00:34 编辑

上图:
数据库的原记录: 1.jpg
假设我用以下数据update(其实无论怎么update结果都一样,这里举一个例子而已) 2.jpg
结果就会变成这样:

update后结果

update后结果


controllers:
PHP复制代码
               
                  function callbackdata(){
                        $userid         = $this->self_session->userdata('userid');
                        $data['username']       = $this->input->post("username");
                        $data['qq']                     = $this->input->post("QQ");
                        $data['phone']          = $this->input->post("phone");
                        $data['school']         = $this->input->post("school");
                        $data['depart']         = $this->input->post("department");
                        $data['say']            = $this->input->post("say");
                        $data['is_show']        = $this->input->post("competence");
 
                        $result = $this->Mpersonalpage->modify_data($userid ,$data);
                        if ($result === FALSE){
                                show_error('<font color=red>修改信息时发生错误</font>',401);
                                return ;
                        }
                        $this->Mglobal->show('操作成功','修改信息成功!',site_url('personalpage'));
                        $this->output->enable_profiler(TRUE);
 
                }
复制代码

model:
PHP复制代码
function modify_data($userid ,$data){
                        print_r($data);
                        $this->db->where('userid',$userid);
                        $this->db->update('memberinfo' ,$data);
                        if ($this->db->affected_rows() > 0 ){
                                return TRUE;
                        }
                        return FALSE;
                }
复制代码

print_r($data)结果为:Array ( [username] => 阿萨德的 [qq] => 380032007 [phone] => 2147483647 [school] => 华师 [depart] => 计算机 [say] => 123123123123 [is_show] => 0 )

因为我是$this->output->enable_profiler(TRUE); 我把sql语句放到mysql里执行又一切正常,而实际上model也返回了TRUE,也说明了update成功?为什么结果就不是我update的结果呢???
 楼主| 发表于 2010-10-10 00:35:51 | 显示全部楼层
自己顶自己,求高人解释!!!
发表于 2010-10-10 17:16:23 | 显示全部楼层
你可以跟踪到db->update()方法去看看发生了什么
发表于 2010-10-12 14:26:34 | 显示全部楼层
首先看看数组有没有问题
var_dump($data);
然后
你用$this->db->query($sql,$data);
可以执行了吗?
发表于 2010-11-14 20:40:10 | 显示全部楼层
请你认真查看你的UserName 数据类型
发表于 2010-12-17 02:05:57 | 显示全部楼层
本人有一次相同,原来是 .php 文件编码不是utf8,改了就正常
发表于 2010-12-17 16:59:42 | 显示全部楼层
我感觉是编码的问题,你可以用火狐调试下,会显示你插入了什么东西!!
发表于 2011-1-13 11:24:48 | 显示全部楼层
把sql打出来,拿去数据库直接执行,什么问题都好了。。。
发表于 2011-3-1 23:03:42 | 显示全部楼层
$this->db->affected_rows() > 0
没有返回受影响行数?
发表于 2011-9-29 11:15:23 | 显示全部楼层
估计是编码问题。

本版积分规则