久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

Z-BlogPHP SQL(一)

2023-09-08 225

本文內(nèi)容僅適用于1.7 及更高版本!

一、基本概念

演示一:

// 使用鏈?zhǔn)秸Z法生成 SQL 語句
$sql = $zbp->db->sql->get()
->select($zbp->table['Post'])
->where(array('=', 'log_ID', "1"))
->sql;
// 執(zhí)行 SQL 語句并返回結(jié)果
$array = $zbp->db->Query($sql);
print_r($array);

演示二:

// 鏈?zhǔn)阶x法中直接返回查詢結(jié)果
$array = $zbp->db->sql->get()
->select($zbp->table['Comment'])
->count(array('comm_ID'=>'num'))
->query;
print_r($array);

演示三:

對(duì)于以下方法或函數(shù),其$select或者$sql參數(shù)均可以代入「sql 鏈?zhǔn)綄?duì)象」:

$zbp->GetPostList()、$zbp->GetCommentList()、$zbp->GetTagList()等,其第一個(gè)參數(shù)為$select;
$zbp->GetListType()、$zbp->GetListOrigin();
#先定義一個(gè)sql鏈對(duì)象,再獲取結(jié)果
$posts = $zbp->GetPostList(
$zbp->db->sql->get()->select($zbp->table['Post'])->where('=','log_CateID',1)
);

二、SQL SELECT

1、使用 select 指令

// 取category表所有的數(shù)據(jù)
$sql = $zbp->db->sql->get()->select($zbp->table['Category'])->sql;
$array = $zbp->GetListType('Category', $sql);
// 遍歷數(shù)據(jù)輸出等
foreach ($array as $a) {
...
}

SQL 語句輸出:

SELECT * FROM zbp_category

2、使用selectany和from指令組合

//取category表的ID字段數(shù)組
$sql = $zbp->db->sql->get()->selectany('cate_ID')->from($zbp->table['Category'])->sql;
$array = $zbp->db->query($sql);

SQL 語句輸出:

SELECT cate_ID FROM zbp_category

三、SQL WHERE子句

取 ID 為 1 的文章

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(array('=', 'log_ID', "1"))
->sql;
$articles = GetListType('Post', $sql);
// where(array('=', 'log_ID', "1")) = 可以換成<>,LIKE,>=,<= 等等

SQL 語句輸出:

SELECT * FROM zbp_post WHERE log_ID = '1'

重要:如果非要在where中拼接字符串請(qǐng)一定用addslashes轉(zhuǎn)義單引號(hào):

where('?log_Title LIKE \'%' . addslashes('字符串') . '%\'')

四、AND 運(yùn)算符

連續(xù)調(diào)用where()方法即可實(shí)現(xiàn)AND查詢:

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(array('=', 'log_Status', "1"))
->where(array('=', 'log_Type', "0"))
->sql;
$articles = GetListType('Post', $sql);
SELECT * FROM zbp_post WHERE log_Status = '1' AND log_Type = '0'
// where 還可以先定義一個(gè)數(shù)組
$w = array();
$w[] = array('=', 'log_Type' ,'0');
$w[] = array('=', 'log_AuthorID' ,'1');
$w[] = array('=', 'log_CateID' ,'2');
// 作為參數(shù)使用
->where($w)

五、OR 運(yùn)算符

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(
array('or',
array(
array('log_ID', '1'),
array('log_Title', '2'),
),
)
)
->sql;
// 注意,此處的條件也可以寫為->where('or',array('=', 'log_ID', '1'),array('=', 'log_Title', '2'))
SELECT * FROM zbp_post WHERE ((1 = 1) AND ( log_ID = '1' OR log_Title = '2' ) )

非缺省操作符:

// 缺省操作符為 = ,也可使用其他操作符
$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(
array('or',
array(
array('<>', 'log_ID', '1'),
array('LIKE', 'log_Title', '2'),
),
)
)
->sql;
SELECT * FROM zbp_post WHERE ((1 = 1) AND ( log_ID <> '1' OR log_Title LIKE '2' ) )

六、LIKE 操作符

一般用于搜索中,search和like的區(qū)別就是search會(huì)自動(dòng)在字符兩邊加上%

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(array('search', 'log_Title', "Test"))
->sql;
SELECT * FROM zbp_post WHERE ((1 = 1) AND ( (log_Title LIKE '%Test%') ) )

七、IN 操作符

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(array('IN', 'log_ID', array(1, 2, 3, 4)))
->sql
SELECT * FROM zbp_post WHERE ((1 = 1) AND (log_ID IN ( '1' , '2' , '3' , '4' ) ) )
$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(array('NOT IN', 'log_ID', '(1, 2, 3)'))
->sql
SELECT * FROM zbp_post WHERE (log_ID NOT IN (1, 2, 3))

八、BETWEEN操作符

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(array('between', 'log_ID', "1", "3"))
->sql
SELECT * FROM zbp_post WHERE (log_ID BETWEEN '1' AND '3')

九、EXISTS和NOT EXISTS操作符

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(array('exists', 'SELECT 1'))
->sql;
SELECT * FROM zbp_post WHERE EXISTS ( SELECT 1 )

十、SQL通配符

可用通配符:%、_、[charlist]、[^charlist]、[!charlist]

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->where(array('like', 'log_Title', "_aidu"))
->sql;
SELECT * FROM zbp_post WHERE ((1 = 1) AND ( (log_Title LIKE '_aidu') ) )

十一、SELECT LIMIT

如果只給定一個(gè)參數(shù),它表示返回最大的記錄行數(shù)目,LIMIT n 等價(jià)于 LIMIT 0,n。

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->limit(5)
->sql;
SELECT * FROM zbp_post LIMIT 5
// 等于
SELECT * FROM zbp_post LIMIT 5 OFFSET 0

檢索記錄行從第 6 行開始,返回最多 10 行

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->limit(5, 10)
->sql;
SELECT * FROM zbp_post LIMIT 10 OFFSET 5

十二、SELECT DISTINCT

關(guān)鍵詞 DISTINCT 用于返回唯一不同的值。

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->distinct(array('log_Title'=>'t'), 'log_ID')
->sql;
SELECT DISTINCT log_Title AS t,log_ID FROM zbp_post

十三、SQL ORDER BY

ORDER BY 語句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序。ORDER BY 語句默認(rèn)按照升序?qū)τ涗涍M(jìn)行排序:

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->orderBy(array('log_PostTime' => 'desc'), array('log_ID' => 'asc'))
->sql;
SELECT * FROM zbp_post ORDER BY log_PostTime DESC, log_ID ASC

十四、SQL GROUP BY

取出每一個(gè)作者的所有文章的總評(píng)論數(shù):

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->sum('log_CommNums')
->groupBy('log_AuthorID')
->sql;
SELECT SUM(log_CommNums) FROM zbp_post GROUP BY log_AuthorID

十五、SQL HAVING 子句

在 SQL 中增加 HAVING 子句原因是,WHERE 關(guān)鍵字無法與合計(jì)函數(shù)一起使用;

以下示例為取出分類下文章評(píng)論總數(shù)大于 100 的所有的分類:

$sql = $zbp->db->sql->get()->select($zbp->table['Post'])
->column('log_CateID')
->column('SUM(log_CommNums)')
->groupby('log_CateID')
->having(array('>', 'SUM(log_CommNums)', '100'))
->sql;
SELECT log_CateID,SUM(log_CommNums) FROM zbp_post GROUP BY log_CateID HAVING SUM(log_CommNums) > 100

十六、SQL JOIN連接

(LEFT JOIN RIGHT JOIN,FULL JOIN,INNER JOIN)

$sql = $zbp->db->sql->get()->selectany('log_ID')
->from(array($zbp->table['Post']=>'p'))
->leftjoin(array('zbp_postrelation'=>'pr'))
->on('p.log_ID = pr.pr_PostID')
->where('1 = 1')
->sql;
// 這里只舉例了 LEFT JOIN 聯(lián)表查詢,還分別給 2 個(gè)表分別設(shè)了別名
SELECT log_ID
FROM zbp_post AS p
LEFT JOIN zbp_postrelation AS pr
ON p.log_ID = pr.pr_PostID
WHERE 1 = 1
// 如果要在 Mysql 下使用 STRAIGHT_JOIN,請(qǐng)?jiān)阪準(zhǔn)?sql 加入 option 參數(shù),
->option(array('straight_join' => true))

十七、UNION, UNION ALL操作符

當(dāng)使用 UNION 時(shí),MySQL 會(huì)把結(jié)果集中重復(fù)的記錄刪掉,而使用 UNION ALL ,MySQL 會(huì)把所有的記錄返回,且效率高于 UNION。

$sql = $zbp->db->sql->get()->union(
$zbp->db->sql->get()->select('zbp_table')->sql,
$zbp->db->sql->get()->select('zbp_table2')->sql
)
->sql;
SELECT * FROM zbp_table UNION SELECT * FROM zbp_table2

十八、SQL 別名

這是一個(gè)使用表別名和字段別名的例子:

$sql = $zbp->db->sql->get()->select(array($zbp->table['Post']=>'p'))
->column(array('log_ID'=>'id'))
->column('log_Type AS type')
->sql;
SELECT log_ID AS id,log_Type AS type FROM zbp_post AS p

更多Z-BlogPHP SQL鏈?zhǔn)讲僮骺蓞㈤啠骸?a href="http://kktzf.com.cn/23734.html">Z-BlogPHP SQL(二)》

  • 廣告合作

  • QQ群號(hào):4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請(qǐng)注明出處“站長百科”和原文地址。
Z-BlogPHP SQL(一)
上一篇: Z-BlogPHP頁面路由
Z-BlogPHP SQL(一)
下一篇: Z-BlogPHP SQL(二)