
#insert#插入数据

```
$data['kid']=basKeyid::kidTemp();
$data['kno']='1';
$data['atime']=time(); 
$data['content']='123abc@q.com'; 
$db->table('xtest_keyid')->data($data)->insert(); 
```


#update#更新数据

```
$data['kno']='2';
unset($data['kid']);
$db->table('xtest_keyid')->data($data)->where("kid='2015-cr-f9pt2r7'")->update(); 
```


#find#数据库查询

1、查询一条数据： 

```
$info=$db->table('表名')->where($condition)->find(); 
成功返回一维数组，否则返回false 

限制字段 
$info=$db->table('表名')->field('id,title')->where($condition)->find(); 

排序 
$info=$db->table('表名')->field('id,title')->where($condition)->order('id desc')->find(); 
注意:order('id desc')逆序order('id asc')升序 

缓存 
$info=$db->table('表名')->cache(10)->where($condition)->find(); 
cache($time) $time>0,数据缓存时间，$time=0，不缓存,$time=-1永久缓存 
```

2、查询多条数据 

```
$list=$db->table('表名')->where($condition)->select(); 

成功返回二维数组，否则返回false 

限制字段 
$list=$db->table('表名')->field('id,title')->where($condition)->select(); 

排序 
$list=$db->table('表名')->field('id,title')->where($condition)->order('id desc')->select(); 

限制条数 
$list=$db->table('表名')->field('id,title')->where($condition)->order('id desc')->limit(10)->select(); 

缓存 
$list=$db->table('表名')->cache($time)->field('id,title')->where($condition)->order('id desc')->limit(10)->select(); 
cache($time) $time>0,数据缓存时间，$time=0，不缓存,$time=-1永久缓存 
```

3、查询数据条数 

```
$count=$db->table('表名')->where($condition)->count(); 
成功返回一个整数，否则返回false 
$count=$db->table('表名')->cache($time)->where($condition)->count(); 

```

* 注意:field(),limit(),order(),cache(),table(),where()没有先后顺序之分  
$condition条件可为字符串或数组，如果是数组，数组下标表示数据库字段名 多个元素用and连接, 

* 复杂一点的sql，可以写成原生的sql查询条件  
$config['DB_CACHE_ON']=true;等于true时，数据库缓存才生效 


#delete#删除数据

```
$condition为查询条件,可为数组或字符串,$condition['id']=1; 
删除成功返回影响的数据行数，否则返回false 
注意，当$condition为空时,不会删除数据。防止不小心把整个表的数据给删除了 
$db->table('xtest_keyid')->where("kid='2015-cr-f9pt2r7'")->delete(); 
```


#query#常用代码

```
如果$sql为查询条件，则返回二维数组，且可以设置缓存$db->cache(缓存时间)->query($sql); 
如果sql不是查询条件语句，缓存设置无效，返回的数据跟mysql_query($sql)一样 
$db->query($sql); 
    --- 系统常用代码 --- 
    $db->table($tabid)->data(basReq::in($fm))->insert();
    $db->table($tabid)->where("kid='$id'")->delete();
    $db->table($tabid)->data(array('enable'=>'1'))->where("kid='$id'")->update();  
    $list = $db->table('base_model')->field('kid,title')->limit(3)->select(); if($list)foreach($list as $r){}}
    $fm = $db->table($tabid)->where("model='$mod' AND kid='$kid'")->find();
    $count = $db->table('base_model')->where("pid='groups'")->count();  
    $sql = "SELECT kid,title FROM base_model_ys WHERE pid='groups' LIMIT 3";
    $list = $db->arr($sql);
    print_r($db->fields('xtest_keyid_ys'));
    print_r($db->tables());
```


#dbelse#其他操作

* 1，查看生成的sql语句，echo $db->sql;或者echo $db->getSql();
 - 数据库操作有问题时，用来查看生成的sql语句 是否正确

* 2，使用数据库配置的前缀/后缀，$db->pre/$db->ext;
 - 主要用于写原生的sql语句用到

* 3 特殊数据库前缀
 - $db->table('表名',$nofix=false)->
 - $nofix===2，=> $full 加上前后缀 的字符串
 - $nofix===1，=> 不加前后缀 返回$db；
 - $nofix===0，=> 加上前后缀 返回$db；

* 4 操作数据库基类，具体方法查看/imcat/core/glib/glbDBObj.php文件 


#dbtips#注意事项

* 数据库操作：$db->操作里面不要含有$db->操作，（少数情况下会出错）

```
如：
$db->table('users_uacc')->data($acc+basSql::logData())->insert(); //
-=>改为两句：
$dataex = basSql::logData(); 
$db->table('users_uacc')->data($acc+$dataex)->insert(); 
```

* 系统设计`缺陷`
 - 原则上,避免使用mysql关键字 作为数据表的字段；本系统使用了【show/key/char】等字段：
 - 【show】用于控制资料显示如否，【key(wex_menu/base_paras中使用)】, 【char(init_types/types_*中使用)】；
 - 这算是一些小`缺陷`，容易引起错误；出问题时，请按如下解决：
 - $list = $db->table('users_inmem')->field('uid,grade,show')->where($usql)->select(); 
 - 子句修改为：->field('uid,grade,\`show\`')即可；<!--源码的\为转义符号-->


* 常用sql

```
  UPDATE users_adminer_ys set uid=concat('2010-4q-',uname)
  UPDATE `users_person_ys` b INNER JOIN users_uacc_ys a ON a.uname=b.uname SET b.uid=a.uid;
  UPDATE `dede_addonarticle` SET body=REPLACE (body,'</td>',");

```