# **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);
//或者
DB('table')->where("id='100'")->update($data);
```
**更新数据(多条)**
循环DEMO
```
/**
* 使用说明:
* alias 是要查询的字段,例如查询ID的话就需要把 alias 换成id
* value 是要设置的字段,例如设置name的话就需要把 alias 换成name
* $alias 条件名称 例如:CP_SITE_NAME
* $value 更新成值 例如:CMSPRO
*/
//循环多条待更新数据
foreach ($_POST as $id=> $value) {
$list_data .= PHP_EOL . "WHEN '$id' THEN '$value'";
$list_where .= "'$idw',";
}
$data = "value = CASE alias $list_data END" . PHP_EOL;
$list_wheres = substr($list_where, 0, -1);
DB('table')->where("alias IN($list_wheres)")->saves($data);
```
懒人版
```
/* 设置项 */
$table = "user"; //需要更新的表名称 例如:user
$whrer_id = "id"; //需要查询的字段 例如:id
$whrer_vl = "name"; //需要设置的字段 例如:name
$list_where = "1,2,3"; //需要查询字段值 例如查询设置多个ID 1,2,3 用逗号隔开
$list_data = "WHEN 1 THEN 'xiaoming' WHEN 2 THEN 'xiaohong' WHEN 3 THEN 'xiaolv'"; //需要设置的值 例如批量设置对应id的name值
//进行更新
DB($table)->where("$whrer_id IN($list_where)")->saves("$whrer_vl = CASE $whrer_id $list_data END");
```
**指定字段加**
```
/**
* 指定字段加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();
//或者
$rows = DB('table')->where("type='1'")->rows();
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();
//或者
$row = DB('table')->where("type='1'")->row();
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 $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($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);
```
- 关于CMSPRO
- 安装使用
- 首次使用
- 功能使用
- 系统后台
- 系统
- 系统配置
- 开发使用
- 基础学习
- php如何修改文件创建时间
- 类方法
- 系统框架
- 系统入口框架
- URL处理
- 自动附加封装类、函数入口
- 内置应用
- GET与POST
- 字符控制
- 多语言使用
- 数据库使用
- 页面跳转
- 数组控制
- 时间相关
- 文件操作
- 获取系统设置的应用目录
- IP获取与解析
- 数据分页
- 内置插件
- 短信发送
- 信息模板
- 消息操作
- 消息操作(旧)
- 资金操作
- 优惠券
- 积分操作
- 服务器接口
- 宝塔接口
- 域名接口
- 西部数据
- whois查询
- 事件管理器
- 规则管理器
- 电子邮件
- 常用代码
- 数据获取与分页
- 模型自动构建表单
- 排版布局
- 常用样式
- 编辑表单
- tab选项卡
- JS相关
- 插件
- 钩子
- 高级进阶
- 消息和模板组合使用
- API接口
- 充值支付
- 积分充值兑换
- 短信验证码
- 邮箱验证码
- 微信消息模板
- 获取货币信息
- 获取积分信息
- 商品操作
- 信息反馈
- LayIM相关
- 自定义一级URL
- 自定义功能
- 用户中心
- 网站管理
- 模板引擎v2
- 基础学习
- 变量输出
- 使用函数
- 运算符
- 原样输出
- 模板注释
- 模板继承
- 包含文件
- 内置标签
- 循环标签
- 比较标签
- 条件判断
- 资源文件加载
- 标签嵌套
- 原生PHP
- 定义标签
- 功能应用
- 站点统计
- 数据列表
- 单条数据
- 功能动作
- 账户资金
- 账户积分
- 网站导航
- 从零使用
- 结构了解
- 基础工作
- 模板引擎v1
- 模板标签
- 导航菜单
- 获取数据列表
- 获取单条数据
- 广告以及连接
- if判断
- 判断是否登录
- 判断系统变量
- 自定义判断
- 常规判断
- 模板表单
- 高级使用
- 前后分离v1
- 通用
- 支付
- 积分
- 论坛
- 下载
- 微信
- 云服务SDK开发
- 通用请求