🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# **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); ```