iwebshop框架用到的幾種常用sql處理

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)

小程序開(kāi)發(fā)