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

[已解决] 关于CI与sqlite3数据库连接后的更新问题

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

controller

PHP复制代码
 
[color=#000080]function index(){
[/backcolor][backcolor=#f7faff]    $this->load->model('db_model');
[/backcolor][backcolor=#f7faff]    
$users = $this->db_model->get_data();
[/backcolor][backcolor=#f7faff]    
foreach($users as $user){
[/backcolor][backcolor=#f7faff]        
echo $user->username;
[/backcolor][backcolor=#f7faff]
[/backcolor][backcolor=#f7faff]        
$name = $user->username;
[/backcolor][backcolor=#f7faff]        
$id = $user->userid;
[/backcolor][backcolor=#f7faff]        
$password = $user->password;
[/backcolor][backcolor=#f7faff]        
$avatar = $user->avatar;
[/backcolor][backcolor=#f7faff]        
$sex = $user->sex;
[/backcolor][backcolor=#f7faff]        
$city = $user->cityid;
[/backcolor][backcolor=#f7faff]    }
[/backcolor][backcolor=#f7faff]
[/backcolor][backcolor=#f7faff]    
$data = array(
[/backcolor][backcolor=#f7faff]        
'username'=>'啊扣扣',
[/backcolor][backcolor=#f7faff]        
'password'=>$password,
[/backcolor][backcolor=#f7faff]        
'avatar'=>$avatar,
[/backcolor][backcolor=#f7faff]        
'sex'=>$sex,
[/backcolor][backcolor=#f7faff]        
'cityid'=>$city
[/backcolor][/color][color=#660000]    
);
[/backcolor][backcolor=#f7faff]
[/backcolor][backcolor=#f7faff]    
$this->db_model->update($id,$data);
[/backcolor][backcolor=#f7faff]    
$users = $this->db_model->get_data();
[/backcolor][backcolor=#f7faff]    
foreach($users as $user){
[/backcolor][backcolor=#f7faff]        
echo $user->username;
[/backcolor][backcolor=#f7faff]    }
[/backcolor][backcolor=#f7faff]
[/backcolor][backcolor=#f7faff]
[/backcolor][backcolor=#f7faff]
[/backcolor][backcolor=#f7faff]
[/backcolor][backcolor=#f7faff]}

 
复制代码


model
PHP复制代码
 
[color=#000080]public function
get_data(){
[/backcolor][backcolor=#f7faff]    
$query = $this->db->get('user');
[/backcolor][backcolor=#f7faff]    
return $query->result();
[/backcolor][backcolor=#f7faff]}
[/backcolor][backcolor=#f7faff]
[/backcolor][color=#000080]public function
update($id, $data){
[/backcolor][backcolor=#f7faff]
[/backcolor][backcolor=#f7faff]    
$query=$this->db->query("select * from user WHERE userid='".$id."'");
[/backcolor][backcolor=#f7faff]    
echo "<br />";
[/backcolor][backcolor=#f7faff]    
echo $query->num_rows();
[/backcolor][backcolor=#f7faff]    
echo "<br />";
[/backcolor][backcolor=#f7faff]    
$this->db->update('user',$data);
[/backcolor][backcolor=#f7faff]}

 
复制代码


最后输出

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




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

发表于 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辅助方法可以自己设置错误信息吗?比如说没有选择上传文件,就使用自定义的图片,如果没有满足图片大小要求,就输出自定义的错误信息
发表于 2016-12-1 11:08:38 | 显示全部楼层
张耳朵 发表于 2016-11-30 20:23
谢谢大神!
初学php,还在摸索中(我还以为query选出来的就是update的where条件选出来的行)

可以,具体需要参考一下手册。

本版积分规则