发布网友 发布时间:2022-04-09 19:51
共2个回答
懂视网 时间:2022-04-10 00:12
query 查询类标签(用于前端遍历)实例:
{query:name=goods}
{$item[‘name‘]}<br/>
{/query}
本人实际开发中书写代码应用:
<php // 下面代码是放在html页面的 {query:name=user fields=username where=id eq $user_id} {$item[‘username‘]} {/query}的购物清单</td> ?>
分页:
{set:$page=IReq::get(‘page‘)==null?1:IReq::get(‘page‘);}//定义分页变量
{query:name=goods page=$page pagesize=5}
{$key}:{$item[‘name‘]}<br/>
{/query}
{$query->getPageBar()} //调用分页方法
数据库读取和写入:
IQuery类:
IQuery 提供了很丰富的属性和功能,通过简单的属性配置,就可以实现很多的SQL 查询功能,比如我们要查询商
品表(goods)里面的id=10 的商品,则:
$goodsDB = new IQuery(‘goods’);
$goodsDB->where = “id = 10”;
$goodsData = $goodsDB->find();
. find()就是执行查询最终数据的一个接口。
创建好IQuery 对象以后,就可以设置各种类属性来组合查询数据了。
主要属性列表如下:
属性名称数据类型说明
fields String 可选默认* 读取表的字段数据
where String 可选默认无查询条件
join String 可选默认无表连接操作,比如:
$db = new IQuery(‘goods as g’);
$db->join=”left join products as p on g.id = p.goods_id”;
$db->find();
group String 可选默认无表分组操作,比如:
$db = new IQuery(‘goods as g’);
$db->group = “price”;
$db->find();
having String 可选默认无表分组结果的筛选,设置group 属性才有意义
order String 可选默认无表排序字段
limit Int 可选默认20 条读取指定数量的条数
page Int 可选默认无设置分页。设置后IQuery 类库增加paging 属性(分页类)
pagesize Int 可选默认20 条每个分页显示的数据量,设置page 属性才有意义
pagelength Int 可选默认10 页显示多少页数,设置page 属性才有意义
cache String 可选memcache, 缓存查询结果提高效率,降低数据库压力。填写缓存的模式,前提是您的系统必须支持iWebShop 缓存技术
debug Int 可选默认0 关闭;1 开启调试SQL 语句,系统会自动输出完整的SQL 原生态语句
本人实际开发中书写代码应用
查询:
function give_goods_list(){ $giveaway_Obj = new IQuery(‘giveaway‘); $giveaway_Obj -> where = "is_del = 0"; $giveaway_infos = $giveaway_Obj -> find(); $this->data = $giveaway_infos; $this->redirect(‘give_goods_list‘); }
IModel类:
数据库写入一般用IModel 类,目前支持update(更新),add(添加),del(删除),dropTable(卸载
表),createTable(创建表)。
一般使用都是通过创建new IModel(表名)对象来创建的数据库实例,然后调用setData()接口进行数据设
置。
比如要更新goods 表的price 字段,那么就是:
$goodsDB = new IModel(‘goods’);
$goodsDB->setData(array(‘price’ => 1000));
$goodsDB->update(‘id = 2’);
方法名字数据类型说明
update($where,
$except=array()
)
$where:string 更新条件
$except:array 特殊表达式
字段(非字符串类型)
更新记录
通过$this->setData($array); $array(字段=>更新数据)
表更新字段对应数据关系
add() 添加记录
通过$this->setData($array); $array(字段=>添加数据)
表添加记录对应数据关系
del($where) $where:string 删除条件删除记录
把满足$where 条件的记录都删除
dropTable() 卸载表
把当前IModel 实例对应的表删除
createTable() 创建表
创建当前IModel 实例对应的表
通过$this->setData($array); 设置创建表元素(多维数组)
$array = array(
"column" => 字段配置array("type" => 数据类型,"default"
=> 默认值,"comment" => 字段注释,"auto_increment" =>
数值自增长)
"comment"=> 表注释
"index" => 表索引array("索引类
型:PRIMARY,KEY,UNIQUE" => "字段名称")
本人实际开发中书写代码应用:
添加:
function supplier_edit_add() { $id = IFilter::act(IReq::get(‘id‘),‘int‘); $company = IFilter::act(IReq::get(‘firm_name‘)); $address = IFilter::act(IReq::get(‘address‘)); $pname = IFilter::act(IReq::get(‘name‘)); $mobile = IFilter::act(IReq::get(‘mobile‘)); $phone = IFilter::act(IReq::get(‘telephone‘)); $img = IFilter::act(IReq::get(‘img‘)); $account = IFilter::act(IReq::get(‘account_num‘)); $bank = IFilter::act(IReq::get(‘bank_name‘)); $province = IFilter::act(IReq::get(‘province‘),‘int‘); $city = IFilter::act(IReq::get(‘city‘),‘int‘); $area = IFilter::act(IReq::get(‘area‘),‘int‘); $_POST[‘area‘] = ""; if($province && $city && $area) { $_POST[‘area‘] = array($province,$city,$area); } $user_id =$this->admin[‘admin_id‘]; $stock = new IModel(‘supplier_list‘); $stock_Init = array( ‘firm_name‘ => $company, ‘area‘ => $_POST[‘area‘] ? ",".join(",",$_POST[‘area‘])."," : "", ‘address‘ => $address, ‘name‘ => $pname, ‘mobile‘ => $mobile, ‘telephone‘ => $phone, ‘img‘ => $img, ‘account_num‘ => $account, ‘bank_name‘ => $bank, ‘create_time‘ => date(‘Y-m-d H:i:s‘,time()), ‘admin_id‘ => $user_id ); if($id){ $stock->setData($stock_Init); $stock->update(‘id = ‘.$id); }else{ $stock->setData($stock_Init); $stock->add(); } $this->redirect(‘supplier_list‘); } 删除:(注意:软删除,数据库保留) function supplier_list_del(){ $id = IFilter::act(IReq::get(‘id‘),‘int‘); $stock = new IModel(‘supplier_list‘); $stock->setData(array(‘is_del‘=>1)); if($id) { $stock->update(Util::joinStr($id)); }else{ die(‘请选择要删除的数据‘); } $this->redirect("supplier_list"); }
更新:
function suppliet_list_restore(){ $id = IFilter::act(IReq::get(‘id‘),‘int‘); //生成goods对象 $stock = new IModel(‘supplier_list‘); $stock->setData(array(‘is_del‘=>0)); if($id) { $stock->update(Util::joinStr($id)); } else { die(‘请选择要恢复的数据‘); } $this->redirect("supplier_list"); }
原生态的SQL 可以用IDBFactory::getDB()->query($sql);此时可以直接写原生态的SQL 语句,但是要注意
SQL 语句中把表前缀增加上,因为IDBFactory 不会对$sql 有任何的修改,直接100%原样输送给mysql,当要执
行一些特殊的,复杂的SQL 可以使用此方法。
本人实际开发中书写代码应用:
$sql_class = "SELECT zce.category_id,gs.brand_id,zc.parent_id from (zqwy_goods as gs left join zqwy_category_extend as zce on gs.id = zce.goods_id) left join zqwy_category as zc on zce.category_id = zc.id WHERE gs.id =".$v[‘goods_id‘].";"; $goods_class = IDBFactory::getDB()->query($sql_class);
本文出自 “kangjunfei” 博客,请务必保留此出处http://kangjunfei.blog.51cto.com/11556647/1915580
iwebshop框架用到的几种常用sql处理
标签:iwebshop
热心网友 时间:2022-04-09 21:20
列一下我电脑上的这些SQL Server (SQL2005) 提供数据的存储、处理和受控访问,并提供快速的事务处理。SQL Server Active Directory Helper 支持与 Active Directory 的集成。SQL Server Agent (SQL2005) 执行作业、监视 SQL Server、激发警报,以及允许自动执行某些管理任务。SQL Server Analysis Services (SQL2005) 为商业智能应用程序提供联机分析处理(OLAP)和数据挖掘功能。SQL Server Browser 将 SQL Server 连接信息提供给客户端计算机。SQL Server FullText Search (SQL2005) 快速创建结构化和半结构化数据的内容和属性的全文索引,以允许对此数据进行快速的语言搜索。SQL Server Reporting Services (SQL2005) 管理、执行、呈现、计划和传递报表。SQL Server VSS Writer 提供通过 Windows VSS 基础结构备份/还原 Microsoft SQL server 的接口。其中的那个“SQL Server (SQL2005)”之所以有“(SQL2005)”是因为我的电脑同时还运行着SQL2000,所以给它取了别名。你如果没有给它取别名的话,应该是默认的“SQL Server”你找一下看,找不到再问我