张耳朵 发表于 2016-11-29 22:27:54

关于CI与sqlite3数据库连接后的更新问题

大佬们我又来啦!
我的项目用的是sqlite3的数据库,ci是3.1.2,使用说明手册里的insert和query一直都没有问题,但是今天写个人管理,想要更新用户信息的时候,update会把整张表的数据都更新,不想用replace,因为不想每次都把全部字段更新一遍,希望可以更新其中的部分字段,但是使用update时,
$this->db->query()选出对应行(也可以证明只选了一行)
$this->update->('user',$data)会把整张表的所有数据都更新,这是为毛啊,希望大佬能解答一下
代码贴上来

controller


function index(){
    $this->load->model('db_model');
    $users = $this->db_model->get_data();
    foreach($users as $user){
      echo $user->username;

      $name = $user->username;
      $id = $user->userid;
      $password = $user->password;
      $avatar = $user->avatar;
      $sex = $user->sex;
      $city = $user->cityid;
    }

    $data = array(
      'username'=>'啊扣扣',
      'password'=>$password,
      'avatar'=>$avatar,
      'sex'=>$sex,
      'cityid'=>$city
    );

    $this->db_model->update($id,$data);
    $users = $this->db_model->get_data();
    foreach($users as $user){
      echo $user->username;
    }




}


model

public function get_data(){
    $query = $this->db->get('user');
    return $query->result();
}

public function update($id, $data){

    $query=$this->db->query("select * from user WHERE userid='".$id."'");
    echo "<br />";
    echo $query->num_rows();
    echo "<br />";
    $this->db->update('user',$data);
}


最后输出

啊扣扣张耳朵张狗蛋张全蛋
1
啊扣扣啊扣扣啊扣扣啊扣扣




第一排是数据库里原来的username
中间是选出来的行数
最后一排是最终改完以后数据库里的username

Hex 发表于 2016-11-30 18:41:33

update 需要给一个 where 条件呀,否则就会更新所有数据,这个是 SQL 知识。(update 和 query 是没有任何上下文关系的,楼主是不是把这里搞混了?)

张耳朵 发表于 2016-11-30 20:23:58

Hex 发表于 2016-11-30 18:41
update 需要给一个 where 条件呀,否则就会更新所有数据,这个是 SQL 知识。(update 和 query 是没有任何 ...

谢谢大神!
初学php,还在摸索中(我还以为query选出来的就是update的where条件选出来的行)

还有一个问题,ci的upload辅助方法可以自己设置错误信息吗?比如说没有选择上传文件,就使用自定义的图片,如果没有满足图片大小要求,就输出自定义的错误信息

Hex 发表于 2016-12-1 11:08:38

张耳朵 发表于 2016-11-30 20:23
谢谢大神!
初学php,还在摸索中(我还以为query选出来的就是update的where条件选出来的行)



可以,具体需要参考一下手册。
页: [1]
查看完整版本: 关于CI与sqlite3数据库连接后的更新问题