shopnc mysql_(转) shopnc数据库操作

系统模型提供了一系列快捷操作的方法,可以大幅提高开发效率。目前已提供的方法主要有select、find、limit、table、order、where、field、on、join、count、page、attr、showpage、insert、insertAll、delete、update、group、having、distinct、clear、query、execute、sum、avg、max、min、setInc、setDec、和动态方法getby_、getfby_。

1.Select 方法:取得查询信息,返回结果为数组,如果未找到数据返回null,select一般在where,order,tabale等方法的后面,作为最后一个方法来使用。如:

$model = Model('member');

// 查询会员表全部信息

$model->select();

//取得性别为1的会员列表信息, 注意:select方法需要在连贯操作中的最后一步出现

$model->where(array('member_sex'=>1))->select();

Select 方法可以传入主键ID,系统会自动查找对应信息,如:

// 查询主键ID为5的会员信息

$model = Model('member');

$model->select(5);

2.Find方法:取得一条记录信息,find同select一样,一般作为最后一个方法来使用,如:

$model = Model('member');

// 查询ID为5的会员信息

$model->where(array('member_id'=>5))->find();

Find方法可以传入主键ID,系统会自动查找对应信息,如:

$model = Model('member');

// 查询主键ID为5的会员信息

$model->find(5);

3.Limit 方法:指定返回多少条记录数,

$model = Model('member');

$model->limit(4)->select();          // 等同于SELECT * FROM member LIMIT 4;

$model->limit('4,10')->select();     // 等同于SELECT * FROM member LIMIT 4,10;

4.Table方法:指定要操作的数据表名称,返回模型实例本身,如:

$model = Model();

// 查询主键ID为5的会员信息

$model->table('member')->find(5);

多表联合查询时,可以传入多个表名称,如:

// 内链接查询member和store表,并返回前两条记录

$on = 'store.member_id=member.member_id';

$model->table('member,store')->join('inner')->on($on)->limit(2)->select();

如果实例化时指定了表名,则可以不使用table方法指定表名,如:

$model = Model('member');

$model ->limit(4)->select();   // 查询前条4会员记录

5.Order方法:指定排序的参数,返回模型实例本身,如:

$model->table('member')->order('member_id desc')->limit(4)->select();

也可指定多个字段进行排序,如:

$model->table('member')->order('member_id desc,member_sex asc')->select();

6.Where 方法:指定sql执行的条件,返回模型实例本身,入可传入数组或字段串,如:

//传入数组条件

$model->where(array('member_id'=>5))->find();

//传入字符串条件

$model->where(array('member_id=5'))->find();

//传入多表关联条件

$model->table('member,store');

$model->where('store.store_id=member.store_id and store.store_id=2')->find();

7.Field 方法:指定要查询的字段,不使用field方法时,默认查询所有字段,如:

$model->field('member_id,member_name')->select();

8.On 方法:指定多表联查时的字段关系。

9.Join 方法:指定多表联查时的链接类型, 支持内链接、左链接(默认)、右链接。On与join方法需要一起使用,如:

$model = Model();

//内链接查询member和store表,返回会员ID为6的记录信息

$field = 'member.member_name,store.store_name';

$on = 'store.member_id=member.member_id';

$model->table('member,store')->field($field);

$model->join('inner')->on($on)->where(array('member.member_id'=>6))->find();

三表关联查询如下:

$model = Model();

//内链接查询member和store,然后左链接store_class,查询会员ID为6的记录信息

$field = 'member.member_name,store.store_name,store_class.sc_name';

$on = 'store.member_id=member.member_id,store.sc_id=store_class.sc_id';

$model->table('member,store,store_class')->field($field);

$model->join('inner,left')->on($on)->where('member.member_id=6')->find();

10.Count 方法:返回记录总数量,如:

$model = Model('member');

//返回会员表总行数

$model->count();

//返回会员ID大于15的记录数

$model->where('member_id>15')->count();

11.Page 方法:实现记录分页,格式为page(每页显示数,总记录数),总记录数可以人为指定,也可以为空让系统自动去计算,如:

//每页显示10条数据

$model = Model('member');

//系统会跟据每页显示数和已知属性自动计算总记录数

$model->page(10)->order('member_id desc')->select();

//每页显示10条数据,指定总记录为1000条,系统将不再计算总记录数

$model->page(10, 1000)->order('member_id desc')->select();

注意:如果同时使用where和page方法时,where方法要在page方法前面使用,如:

$model->where('id=1')->page(10)->select();    //正确

$model->page(10)->where('id=1')->select();    //错误

12.Showpage 方法:返回分页超链接,结合page方法完成分页,如:

//显示上一页下一下链接

$model->showpage(1);    //样式1

$model->showpage(2);    //样式2(默认)

13.Insert 方法:插入单行数据,并返回最新插入的主键ID,如果插入失败返回false,完整格式如下:

insert($data='', $replace=false, $options=array())

//向link表插入数据,并返回最新主键ID

$model = Model('table');

$data = array(

'link_title'=>'ShopNC',

'link_url'=>'http://www.shopnc.net',

'link_sort'=>32,

);

$model->insert($data);

Insert方法支持延迟插入,加入$options参数即可,如:

$model->insert($data,false,array('priority'=>'DELAYED'));

Insert方法同样支持replace操作,将第二个参数设置为true即可,如:

$model = Model();

$data = array(

'link_title'=>'ShopNC',

'link_url'=>'http://www.shopnc.net',

'link_sort'=>32,

'link_id'=>30

);

$model->table('link')->insert($data,true);

14.InsertAll 方法:实现批量插入数据,如:

$model = Model('link');

$data = array(

array(

'link_title'=>'新浪',

'link_url'=>'http://www.sina.com',

'link_sort'=>32,

),

array(

'link_title'=>'百度',

'link_url'=>'http://www.baidu.com',

'link_sort'=>30,

)

);

$model->insertAll($data);

15.Delete 方法:删除记录,如:

$model = Model('link');

//删除主键为5的记录

$model->delete(5);

//或者

$model->where(array('link_id'=>5))->delete();

16.Update 方法:数据更新,如果更新内容含有主键下标,自动以该主键为更新条件,如:

$model = Model();

//更新主键(link_id)为37的记录信息

$data = array(

'link_title'=>'ShopNC',

'link_url'=>'http://www.shponc.net',

'link_sort'=>32,

'link_id'=>37

);

$model->table('link')->update($data);

//指定更新条件

$data = array(

'link_title'=>'ShopNC',

'link_url'=>'http://www.shponc.net',

'link_sort'=>32

);

$model->table('link')->where(array('link_id'=>37))->update($data);

17.Group 方法:实现分组功能,如:

//查询每个店铺发布商品的数量

$model = Model('goods');

$model->field('store_id,count(*) as count')->group('store_id')->select();

18.Having 方法:结合group方法,进行条件过滤,传入参数为字符串形式,如:

//查找发布商品超过500的店铺ID

$model = Model('goods');

$model->field('store_id,count(*) as nc_count')->group('store_id')->having('nc_count>500')->select();

19.Distinct 方法:可以去除列中相同的值,distinct只接受一个参数值true,如果不需要重复值筛选,不使用该方法即可。

//查找拥有商品的店铺主键

$model = Model();

$model->table('goods')->field('store_id')->distinct(true)->select();

20.Clear 方法:清空单个表中的内容,返回true/false,如:

//清空link表

$model = Model();

$model->table('link')->clear();

21.Query/execute 方法,两个方法均用于直接执行SQL语句,query方法用于查询,execute方法用于更新、写入和删除操作,如:

Model()->query('SELECT * FROM `shopnc_member` LIMIT 10');

Model()->execute('UPDATE `shopnc_goods` SET goods_click=1000 WHERE goods_id=2');

22.Sum/Avg/Max/Min 方法:求和、求平均值、取最大值、取最小值,如:

$model = Model();

//返回所有商品总价格之和

$model->table('goods')->sum('price');

//上面等同于SQL:SELECT SUM(price) AS nc_sum FROM `goods`

//取商品表中所有商品的平均价格

$model->table('goods')->avg('price');

//以上等同于SQL:SELECT AVG(price) AS nc_avg FROM `goods` LIMIT 1

//取商品的最高价

$model->table('goods')->max('price');

//以上等同于SQL:SELECT MAX(price) AS nc_max FROM `goods` LIMIT 1

//取商品的最低价

$model->table('goods')->min('price');

//以上等同于SQL:SELECT MIN(price) AS nc_min FROM `goods` LIMIT 1

23.自增/自减:系统使用setInc和setDec完成自增和自减,示例如下:

$model = Model();

//使主键值为2的商品点击量加1000

$model->table('goods')->where(array('goods_id'=>2))->setInc('goods_click',1000);

//等同于:UPDATE `goods` SET goods_click=goods_click+3 WHERE ( goods_id = '2' )

//结合exp参数,使用该商品点击量减1000

$model = Model('goods');

$data = array(

'goods_id' => 2,

'goods_click' =>array('exp','goods_click-1000'));

$model->update($data);

//等同于:UPDATE `goods` SET goods_click=goods_click-1000 WHERE ( goods_id = '2' )

24.动态方法:系统内置getby_和getfby_两个动态方法,格式如下:

getby_ + 字段名(字段值)

getfby_ + 条件字段名(条件字段值,返回字段名)

结合示例来说明动态方法的使用

$model = Model('member');

//使用getby_动态方法,取得member_name为kevin的会员信息

$model->getby_member_name('kevin');

//等同于SQL:SELECT * FROM `member` WHERE ( member_name = 'kevin' ) LIMIT 1

//使用getfby_方法,取得member_id为6的会员名

$a = $model->getfby_member_id(6,'member_name');    //返回 kevin

//等同于SQL:SELECT member_name FROM `shopnc_member` WHERE ( member_id = '6' ) LIMIT 1

25.设置SQL执行优先级:系统支持使用SQL关键字LOW_PRIORITY、DELAYED、HIGH_PRIORITY,格式如下:

attr(关键字)

结合示例来说明动态方法的使用

$model = Model('goods');

$model->where(array('goods_id' => 100))->attr('LOW_PRIORITY');

$model->update(array('goods_click' =>array('exp','goods_click+1')));

//等同于

//UPDATE LOW_PRIORITY `shopnc_goods` SET goods_click=goods_click+1 WHERE ( goods_id = '100' )

目录 1 平台管理 - 1 - 1.1 登录 - 1 - 1.2 平台导航 - 1 - 1.3 设置 - 3 - 1.3.1 站点设置 - 3 - 1.3.2 账号同步 - 4 - 1.3.3 上传设置 - 6 - 1.3.4 SEO设置 - 9 - 1.3.5 邮箱短信 - 9 - 1.3.6 支付方式 - 11 - 1.3.7 权限设置 - 12 - 1.3.8 快递公司 - 13 - 1.3.9 运单模板 - 14 - 1.3.10 地区管理 - 15 - 1.3.11 配送区域 - 16 - 1.3.12 清理缓存 - 16 - 1.4 商品 - 17 - 1.4.1 商品分类 - 17 - 1.4.2 品牌管理 - 18 - 1.4.3 商品管理 - 19 - 1.4.4 类型管理 - 21 - 1.4.5 规格管理 - 23 - 1.4.6 图片空间 - 25 - 1.5 店铺 - 25 - 1.5.1 店铺管理 - 25 - 1.5.2 店铺等级 - 27 - 1.5.3 店铺分类 - 28 - 1.5.4 二级域名 - 28 - 1.5.5 店铺动态 - 29 - 1.5.6 店铺帮助 - 30 - 1.5.7 开店首页 - 32 - 1.5.8 自营店铺 - 33 - 1.6 会员 - 34 - 1.6.1 会员管理 - 34 - 1.6.2 会员级别 - 35 - 1.6.3 经验值管理 - 36 - 1.6.4 积分管理 - 37 - 1.6.5 预存款管理 - 37 - 1.6.6 分享绑定 - 38 - 1.6.7 会员相册 - 39 - 1.6.8 买家动态 - 39 - 1.6.9 聊天记录 - 41 - 1.7 交易 - 41 - 1.7.1 实物订单 - 41 - 1.7.2 虚拟订单 - 42 - 1.7.3 退款管理 - 43 - 1.7.4 退货管理 - 43 - 1.7.5 虚拟订单退款 - 44 - 1.7.6 咨询管理 - 44 - 1.7.7 举报管理 - 45 - 1.7.8 评价管理 - 47 - 1.7.9 投诉管理 - 47 - 1.8 网站 - 50 - 1.8.1 文章分类 - 50 - 1.8.2 文章管理 - 50 - 1.8.3 会员协议 - 52 - 1.8.4 页面导航 - 52 - 1.8.5 广告管理 - 53 - 1.8.6 首页管理 - 55 - 1.8.7 推荐位 - 59 - 1.8.8 友情连接 - 60 - 1.9 运营 - 60 - 1.9.1 基本设置 - 60 - 1.9.2 抢购管理 - 61 - 1.9.3 虚拟抢购设置 - 61 - 1.9.4 限时折扣 - 62 - 1.9.5 满即送 - 63 - 1.9.6 优惠套装 - 65 - 1.9.7 推荐展位 - 66 - 1.9.8 代金券 - 67 - 1.9.9 结算管理 - 70 - 1.9.10 虚拟订单结算 - 70 - 1.9.11 活动管理 - 70 - 1.9.12 兑换礼品 - 72 - 1.9.13 平台客服 - 75 - 1.9.14 平台充值卡 - 75 - 1.10 统计 - 76 - 1.10.1 概述及设置 - 76 - 1.10.2 行业分析 - 78 - 1.10.3 会员统计 - 81 - 1.10.4 店铺统计 - 82 - 1.10.5 销量分析 - 83 - 1.10.6 商品分析 - 85 - 1.10.7 营销分析 - 87 - 1.10.8 售后分析 - 89 - 1.11 手机端 - 89 - 1.11.1 首页编辑 - 89 - 1.11.2 分类图片设置 - 91 - 1.11.3 下载设置 - 92 - 1.11.4 意见反馈 - 92 - 1.11.5 手机支付 - 93 -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值