query 查詢類標(biāo)簽(用于前端遍歷)
創(chuàng)新互聯(lián)網(wǎng)絡(luò)公司擁有10年的成都網(wǎng)站開(kāi)發(fā)建設(shè)經(jīng)驗(yàn),近千家客戶的共同信賴。提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站開(kāi)發(fā)、網(wǎng)站定制、買友情鏈接、建網(wǎng)站、網(wǎng)站搭建、響應(yīng)式網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)師打造企業(yè)風(fēng)格,提供周到的售前咨詢和貼心的售后服務(wù)
實(shí)例:
{query:name=goods}
{$item['name']}<br/>
{/query}
本人實(shí)際開(kāi)發(fā)中書寫代碼應(yīng)用:
<php // 下面代碼是放在html頁(yè)面的 {query:name=user fields=username where=id eq $user_id} {$item['username']} {/query}的購(gòu)物清單</td> ?>
分頁(yè):
{set:$page=IReq::get('page')==null?1:IReq::get('page');}//定義分頁(yè)變量
{query:name=goods page=$page pagesize=5}
{$key}:{$item['name']}<br/>
{/query}
{$query->getPageBar()} //調(diào)用分頁(yè)方法
數(shù)據(jù)庫(kù)讀取和寫入:
IQuery類:
IQuery 提供了很豐富的屬性和功能,通過(guò)簡(jiǎn)單的屬性配置,就可以實(shí)現(xiàn)很多的SQL 查詢功能,比如我們要查詢商
品表(goods)里面的id=10 的商品,則:
$goodsDB = new IQuery(‘goods’);
$goodsDB->where = “id = 10”;
$goodsData = $goodsDB->find();
. find()就是執(zhí)行查詢最終數(shù)據(jù)的一個(gè)接口。
創(chuàng)建好IQuery 對(duì)象以后,就可以設(shè)置各種類屬性來(lái)組合查詢數(shù)據(jù)了。
主要屬性列表如下:
屬性名稱數(shù)據(jù)類型說(shuō)明
fields String 可選默認(rèn)* 讀取表的字段數(shù)據(jù)
where String 可選默認(rèn)無(wú)查詢條件
join String 可選默認(rèn)無(wú)表連接操作,比如:
$db = new IQuery(‘goods as g’);
$db->join=”left join products as p on g.id = p.goods_id”;
$db->find();
group String 可選默認(rèn)無(wú)表分組操作,比如:
$db = new IQuery(‘goods as g’);
$db->group = “price”;
$db->find();
having String 可選默認(rèn)無(wú)表分組結(jié)果的篩選,設(shè)置group 屬性才有意義
order String 可選默認(rèn)無(wú)表排序字段
limit Int 可選默認(rèn)20 條讀取指定數(shù)量的條數(shù)
page Int 可選默認(rèn)無(wú)設(shè)置分頁(yè)。設(shè)置后IQuery 類庫(kù)增加paging 屬性(分頁(yè)類)
pagesize Int 可選默認(rèn)20 條每個(gè)分頁(yè)顯示的數(shù)據(jù)量,設(shè)置page 屬性才有意義
pagelength Int 可選默認(rèn)10 頁(yè)顯示多少頁(yè)數(shù),設(shè)置page 屬性才有意義
cache String 可選memcache, 緩存查詢結(jié)果提高效率,降低數(shù)據(jù)庫(kù)壓力。填寫緩存的模式,前提是您的系統(tǒng)必須支持iWebShop 緩存技術(shù)
debug Int 可選默認(rèn)0 關(guān)閉;1 開(kāi)啟調(diào)試SQL 語(yǔ)句,系統(tǒng)會(huì)自動(dòng)輸出完整的SQL 原生態(tài)語(yǔ)句
本人實(shí)際開(kāi)發(fā)中書寫代碼應(yīng)用
查詢:
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類:
數(shù)據(jù)庫(kù)寫入一般用IModel 類,目前支持update(更新),add(添加),del(刪除),dropTable(卸載
表),createTable(創(chuàng)建表)。
一般使用都是通過(guò)創(chuàng)建new IModel(表名)對(duì)象來(lái)創(chuàng)建的數(shù)據(jù)庫(kù)實(shí)例,然后調(diào)用setData()接口進(jìn)行數(shù)據(jù)設(shè)
置。
比如要更新goods 表的price 字段,那么就是:
$goodsDB = new IModel(‘goods’);
$goodsDB->setData(array(‘price’ => 1000));
$goodsDB->update(‘id = 2’);
方法名字?jǐn)?shù)據(jù)類型說(shuō)明
update($where,
$except=array()
)
$where:string 更新條件
$except:array 特殊表達(dá)式
字段(非字符串類型)
更新記錄
通過(guò)$this->setData($array); $array(字段=>更新數(shù)據(jù))
表更新字段對(duì)應(yīng)數(shù)據(jù)關(guān)系
add() 添加記錄
通過(guò)$this->setData($array); $array(字段=>添加數(shù)據(jù))
表添加記錄對(duì)應(yīng)數(shù)據(jù)關(guān)系
del($where) $where:string 刪除條件刪除記錄
把滿足$where 條件的記錄都刪除
dropTable() 卸載表
把當(dāng)前IModel 實(shí)例對(duì)應(yīng)的表刪除
createTable() 創(chuàng)建表
創(chuàng)建當(dāng)前IModel 實(shí)例對(duì)應(yīng)的表
通過(guò)$this->setData($array); 設(shè)置創(chuàng)建表元素(多維數(shù)組)
$array = array(
"column" => 字段配置array("type" => 數(shù)據(jù)類型,"default"
=> 默認(rèn)值,"comment" => 字段注釋,"auto_increment" =>
數(shù)值自增長(zhǎng))
"comment"=> 表注釋
"index" => 表索引array("索引類
型:PRIMARY,KEY,UNIQUE" => "字段名稱")
本人實(shí)際開(kāi)發(fā)中書寫代碼應(yīng)用:
添加:
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'); } 刪除:(注意:軟刪除,數(shù)據(jù)庫(kù)保留) 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('請(qǐng)選擇要?jiǎng)h除的數(shù)據(jù)'); } $this->redirect("supplier_list"); }
更新:
function suppliet_list_restore(){ $id = IFilter::act(IReq::get('id'),'int'); //生成goods對(duì)象 $stock = new IModel('supplier_list'); $stock->setData(array('is_del'=>0)); if($id) { $stock->update(Util::joinStr($id)); } else { die('請(qǐng)選擇要恢復(fù)的數(shù)據(jù)'); } $this->redirect("supplier_list"); }
原生態(tài)的SQL 可以用IDBFactory::getDB()->query($sql);此時(shí)可以直接寫原生態(tài)的SQL 語(yǔ)句,但是要注意
SQL 語(yǔ)句中把表前綴增加上,因?yàn)镮DBFactory 不會(huì)對(duì)$sql 有任何的修改,直接100%原樣輸送給MySQL,當(dāng)要執(zhí)
行一些特殊的,復(fù)雜的SQL 可以使用此方法。
本人實(shí)際開(kāi)發(fā)中書寫代碼應(yīng)用:
$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);
分享文章:iwebshop框架用到的幾種常用sql處理
瀏覽地址:http://muchs.cn/article38/pipdpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、建站公司、網(wǎng)站導(dǎo)航、電子商務(wù)、微信小程序、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)