## :-: **【注】:此文档不兼容成品搭建系统v1.x 版本**
# **MySql 基础使用**
> 具体使用方法详见 cmspro/lib/mysql.lib.php
## 系统内置数据库操作
**附加可选参数**
```
getField 指定欲取的字段,多个请以(,)分号隔开//例如 ->getField('uid','tid')
where 查询条件 //例如 ->where("id=100")
order 指定排序 //例如 ->order('id asc') ID正序 | ->order('id desc') ID倒序
limit 指定欲取的数据条数 //例如 ->limit(5) 获取5条数据 | ->limit(100,10) 从第100条开始获取10条数据
field 指定欲取的字段 名称,多个请以(,)分号隔开 //例如 ->field('uid','tid')
```
**添加数据**
单条数据添加
```
/**
* 添加数据
*/
$data = array(
'port' => $port,
'type' => 'port',
'ps' => $ps,
'addtime' => date('Y-m-d H:i:s')
);
DB('table')->add($data);
```
多条数据添加
```
/**
* 添加数据
*/
$c = 10; //添加10条数据
for ($i=1;$c>=$i;$i++) {
$data[] = array(
'port' => $port,
'type' => 'port',
'ps' => $ps,
'addtime' => date('Y-m-d H:i:s')
);
}
DB('table')->adds($data);
```
**更新数据**
```
/**
* 更新数据,返回受影响行
*/
//更新全部
DB('table')->save($data);
//条件更新
DB('table')->where("id='100'")->save($data);
```
**指定字段加**
```
/**
* 指定字段加N,默认加1
*/
//全部修改
DB('table')->sum('number', '100');
//条件修改
DB('table')->where("id='100'")->sum('number', '100');
```
**删除数据**
```
/**
* 删除数据(返回受影响行)
*/
//全部修改
DB('table')->delete();
//条件修改
DB('table')->where("id='100'")->delete();
```
**取数据集**
```
/**
* 取数据集(返回符合条件的所有数据)
*
* 可选择参数 field 指定欲取的字段,多个请以(,)分号隔开
* 可选参数 where 条件查询
* 可选参数 order 指定 字段 排序 desc.倒序|asc.正序
* 可选参数 limit 指定欲取的数据条数(1):一条 |(30,60):从第30条到第60条
*/
//例1
$rows = DB('table')->field('id,name,username,password,accept')->where("type='1'")->select();
//例2
$rows = DB('table')->where("type='1'")->select();
foreach ($rows as $res) {
echo $res['id'];
}
```
**取一行数据**
```
/**
* 取一行数据(只返回第一条数据)
*
* 可选择参数 field 指定欲取的字段,多个请以(,)分号隔开
* 可选参数 where 条件查询
* 可选参数 order 指定排序 desc.倒序|asc.正序
*/
$row = DB('table')->field('id,name,username,password,accept')->where("type='1'")->find();
echo $row['id'];
```
**取指定字段值**
```
/**
* 取指定字段值(当只有一条数据时,直接返回键值,否则返回数组,失败返回false)
*/
DB('table')->where("id=1")->getField('status');
```
**设定指定字段值**
```
/**
* 设定指定字段值
*/
DB('table')->where("id=1")->setField('status', '1');
```
**取符合条件的数据总行数**
```
/**
* 取符合条件的数据总行数
* 可选参数 where 条件查询
*/
//全部表
DB('table')->getCount();
//条件查询
DB('table')->where("status=1")->getCount();
```
**执行SQL语句,返回受影响行**
```
/**
* 执行SQL语句,返回受影响行
*
* $sql SQL语句
* $data 更新内容
*/
//例1
$sqlstr = "INSERT INTO logs(type,log,addtime) VALUES(:type,:log,:addtime)";
DB('table')->execute($sqlstr, $data);
//例2
$sql = 'alter table tasks add column param text;';
DB('table')->execute($sql, null);
```
**同表复制数据**
返回创建的ID
```
/**
* 同表复制数据
* @param String $id 对应ID
* @param String $data 所复制的数据
* @param String $type 1:默认不复制ID 其它值复制数据中的ID
* @return $this
*/
//查询信息
$row = DB('try')->where("id={$_GET['id']}")->find();
//自定义数据(可选)
$row['status'] = '-1';
$row['lasttime'] = time();
$row['addtime'] = time();
$row['starttime'] = time();
$row['endtime'] = time() + 86400 * CP_TRY_OUTTIME;
//复制信息
$tid = DB('try')->copy("id={$_GET['id']}", $row);
```
**执行SQL语句,返回数据集**
```
/**
* 执行SQL语句,返回数据集
*
* 纯原生SQL执行
* 限查询
*/
//例1
$sqlstr = "INSERT INTO logs(type,log,addtime) VALUES(:type,:log,:addtime)";
$rows1 = DB('table')->query($sqlstr, $data);
foreach ($rows1 as $res) {
echo $res['id'];
}
//例2
$sql = 'alter table tasks add column param text;';
$rows2 = DB('table')->query($sql, null);
foreach ($rows2 as $res) {
echo $res['id'];
}
```
**纯原生SQL执行**
```
/*
* 纯原生SQL执行
* 限插入或更新
*/
//例1
$sqlstr = "INSERT INTO logs(type,log,addtime) VALUES(:type,:log,:addtime)";
$rows1 = DB('table')->execute($sqlstr, $data);
foreach ($rows1 as $res) {
echo $res['id'];
}
//例2
$sql = 'alter table tasks add column param text;';
$rows2 = DB('table')->execute($sql, null);
foreach ($rows2 as $res) {
echo $res['id'];
}
```
## 自定义链接数据库操作
**载入数据库操作类**
```
//载入数据库操作类
cp::re('mysql');
//配置数据库信息
$conn['DB_HOST'] = '127.0.0.1'; //主机地址 本地一般采用127.0.0.1或localhost
$conn['DB_PORT'] = '3306'; //数据库端口
$conn['DB_USER'] = 'root'; //数据帐户
$conn['DB_PWD'] = '123456'; //数据密码
$conn['DB_NAME'] = 'test'; //数据库名
$conn['DB_PREFIX'] = 'cp_'; //表前缀
$conn['DB_CHARSET'] = 'utf8'; //数据库编码
$conn['DB_TABLE'] = 'table'; //需要操作的数据库表
$db = Mysql::start($conn);
//数据库操作 其它操作参考【系统内置数据库操作】
$db->add($data);
```
**自定义链接数据库封装操作**
```
function M($table) {
cp::re('mysql');
$conn['DB_HOST'] = '127.0.0.1'; //主机地址 本地一般采用127.0.0.1或localhost
$conn['DB_PORT'] = '3306'; //数据库端口
$conn['DB_USER'] = 'root'; //数据帐户
$conn['DB_PWD'] = '123456'; //数据密码
$conn['DB_NAME'] = 'test'; //数据库名
$conn['DB_PREFIX'] = 'cp_'; //表前缀
$conn['DB_CHARSET'] = 'utf8'; //数据库编码
$conn['DB_TABLE'] = $table; //需要操作的数据库表
return Mysql::start($conn);
}
//数据库操作 其它操作参考【系统内置数据库操作】
M('table')->add($data);
```
**延申学习**
[读取数据进行分页获取内容](读取数据进行分页.md)