罗码网络discuz插件模板教程微信小程序安卓电脑软件htmlphp源码下载

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

[DZ教程] Discuz X!二次开发或插件开发数据库操作语句集合

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:& X8 B3 O9 a) n- l1 ]. h
方法:
5 ?8 N7 S( H4 V3 |DB::insert()2 N7 ~' ?& [1 H" y# y) g
参数:
7 v2 M9 b" N9 x6 B/ T. f" S+ V$table:插入数据的表
9 m# T& X# q* g8 }* W' \" ~$data:插入的数据,字段对应值
$ x$ U/ b/ p( C0 r$return_insert_id:是否返回插入数据的ID
% u8 F! G- a- x' M+ ~" I' o: i/ p$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)
9 f& v2 h6 I3 Y$silent:操作失败是否不提示
, _. N! Q% y, H0 e6 d" Z$ E+ y
! z6 ~( R8 N6 q3 M实例$ y. b& q5 [" m  W# i
DB::insert('test_db',array(
" ~8 v4 Y4 C$ q! S1 E'name' => 'ppc',; d! y  \  L; i9 h. ?' r9 z+ h
),true,true);; y% v$ `$ \# E2 N

* z0 R: l& O$ u数据表删除:; U+ ]) y$ N: o% y$ e, B4 W. `
方法:. m( T+ m2 x7 I( m
DB::delete()0 _0 p' y6 [8 W$ ], k" X
参数:
( a- l0 w8 n, g$table:删除数据的表
8 P5 N: k% A2 w, ?6 l* S3 R$condition:删除的条件
% I# l! G# E6 p* c% ]' l4 ~$limit:删除满足条件的条目数" M' Z8 L3 ]! V0 F
$unbufered:是否使用无缓存查询
* A2 V" G* f0 w* n/ }( K" ~! G5 z- @" ^$ b8 M0 n
实例:
  j9 y2 W5 H. |+ lDB::delete('test_db','id>2',1,true);m
- H2 k+ H7 ~6 S  k" H
1 |2 |! y2 f0 r5 Y7 o% E数据表更新:7 N: C: Z, U+ Q0 K8 V8 `; {7 Q
方法:
! x7 j4 `0 m& w6 k* Q5 P3 @2 NDB::update()
& @  T/ @# L5 g  w! q# j参数:- e) o( q4 N( {% h4 m- q2 C
$table:更新数据的表( n3 R$ G; f, w; ^$ x7 R' l# U2 Q
$data:更新的数据,字段对应值+ n& B; a/ |" `2 U8 H- T" V8 Q$ d* F
$condition:更新的条件
7 [* j; ^; }: H$ u1 H$unbufered:是否使用无缓存查询* t0 `* u; |5 i3 C
$low_priority:是否采用无锁表更新
" {. K' w6 b& t  ^& F
$ N/ ^  b% d* U5 x' ?9 K. B数据表查询(单条):- }  E6 r% E1 e
方法:& [8 o. _- |+ N+ }4 z
DB::fetch_first()
: T2 c; q4 T) B2 ~, G4 Y. S参数:3 W3 j* F1 S; o6 h( y6 E7 _$ y+ |  q
$sql:查询数据的SQL语句
' p) S1 O' k  t' H$arg:绑定查询的参数- K. C+ \4 E) @8 n0 {
$silent:查询失败是否不提示7 Q/ h) X& u7 ^, b
实例:
1 n) v1 ]; V4 }. G$id = $_GET['id'];4 B7 d1 `2 B, W
DB::fetch_first('select * from %t where id=%d',array($ E  t6 d0 \7 l- j- o; I$ Z( P# J
'test_db',$id
6 e3 t1 q( ?: t* W* [/ O. `));$ [. S0 u7 ^, i
! b# ~6 Z! @+ D) o( J9 n$ ?) }
DB::fetch_first('select * from %t where name=%s',array(
  L. \8 y% d3 u5 c; C1 v4 u'test_db','ccc'
* a1 B4 t: e, j6 P));% H2 c: Z/ i* r6 X5 _( ?
6 ~, N+ n7 [  A5 |' u+ M3 V

. S0 I" _; h, c* z: ~; O, Y4 S. V" W: _7 C/ l
数据表查询(多条):
3 P3 Y) e4 L/ i$ J方法:: `" \( _9 n+ G8 l
DB::fetch_all()) [6 d9 y7 m8 J# Y9 L8 {" A
参数:, p: Y+ X9 C/ }% t2 Z& Q
$sql:查询数据的SQL语句' g& P0 D- g8 k6 O
$arg:绑定查询的参数  q' h6 M1 ^; ?9 D
$keyfield:一维索引的字段名称
( b; ^$ c+ m9 B$silent:查询失败是否不提示0 \4 h0 I% a) N( e
实例:5 U+ N$ b& [2 U! m, u. {8 e
DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(
7 V0 c$ o- c# Y* y9 O% J$ u  w9 N'test_db',7,10
+ y5 @% F+ f) K2 B. W' S1 L$ h));
7 l% O0 M0 z' E+ g
/ I3 o2 d: C% v7 O0 tDB::fetch_all('select * from %t where id IN (%n)',array(. P: h" f, k6 C) M. I6 i6 e
'test_db',array(1,2,3,4,5)
4 x8 `3 Y, J$ g7 \6 v));
, d3 S0 U8 E2 Z/ v( R! o  C/ x$ E  v+ N" Q. s
数据表查询(单字段) 常用于统计查询:
) I7 K' T1 T- a# `- p% G& t9 N方法:
% ~1 J. d! @  A) QDB::result_first()
4 H1 @9 N( T5 C9 Q( q0 {& v  O# e参数:
2 Z7 d6 G( r0 L, w$sql:查询数据的SQL语句' L) Y' [- Q. s2 P; t
$arg:绑定查询的参数
, S  `* ~# u2 L; z$silent:查询失败是否不提示& X, n4 e( `1 `; w
实例:
+ c% C9 s* q0 J6 U9 d+ KDB::result_first('select name from %t where id=%d',array(
8 n; Z4 Z/ c& t/ ]' d  Z) _'test_db',1
& ]( S) I0 f* t8 s) v+ P2 d3 W1 M));
6 ~, D( R1 W: |3 V) D" K9 y$ ]8 |' i$ J6 c" r* |" G( E
DB::result_first('select max(id) from %t',array(, j( M5 ]! c4 p6 x; v* S" S
'test_db', Q' c2 [9 D9 A8 }2 G  S; F. F
));+ u0 P% [0 A! ]5 M/ Q2 \

! W0 {+ k$ S$ P) @! b0 G数据库自定义query
' z2 o, E# ^) q, @! H$ Z方法:
. i* T6 d, K& z6 X4 O) CDB::query()4 I- z2 q5 r3 }& B
参数:% i+ i0 f5 y  f6 o2 a* y+ t' u. C
$sql:自定义SQL语句$ Z6 N0 T- C" X6 h; c' y+ z4 H
$arg:需要绑定的数据
! T8 K/ D7 Z6 v. i  X$silent:执行SQL失败时,是否不提示7 n" {* T* b! K; s& V- t5 J
$unbufered:是否使用无缓存查询
/ s, O. o/ Q0 [( g2 |实例:
1 E4 C% C6 l; _# N$query = DB::query("select * from %t where id IN (%n)",array(8 f. P, r5 }! C) e3 _
'test_db',array(1,2,3)
- K* L1 ]3 V, V: `5 y));
8 l0 y' [& Q# s' \) W; b+ O' ^, Bdebug($query);6 `4 Q/ a( g1 E3 |

9 l6 J3 D9 T5 C% y5 A删除
" r" c; \9 ~' A; {& sDB::query("delete from %t where id = %id",array(: {, ]# K  m% E) n- h# x+ ]
'test_db',113 d" u0 x0 \. w/ B9 Y' d/ ?
));6 R' s. N2 O5 g. h: j1 }

; X& Q. c3 H% q3 R: _+ [6 ?( b+ U  l
资源集转换结果集
/ d% ~5 _% q' T2 v5 Q# D" x0 H4 v, b方法:  \" e! S& G4 _* z
DB::fetch(). L! K* _0 w: Z" b" m: J
参数:
- W( z. H; K+ S6 p5 A# {$resourceid:数据库查询的query资源4 v, ~/ j, I( C8 t: k  e
$type:数组类型
7 u# g4 H9 D4 E" e# T实例:) N" u! N* B- x6 n7 c1 T
查询
- S# k3 k  N( i) g1 ?+ N% C9 b$query = DB::query("select * from %t where id IN (%n)",array(+ c0 y  }8 g( Z  n* O
'test_db',array(1,2,3)* V' X: t% O7 v# \0 ~3 E
));6 z; a! w: n6 Y: Y5 M" k' ^
while($res = DB::fetch($query)){
; F8 F7 N7 z8 `- U   $result[] = $res;; T7 H  X9 _( F* q0 D( ^+ M
}# O( X0 X8 p/ K8 g" s1 T- P% A
debug($query);
+ F+ m5 n: e* f) y1 S3 e+ ]' i% N8 _( a
单字段资源集转换结果集(一般用于查看获取统计值)
7 f$ Z8 k# d& K7 Q! k1 m/ Q方法:
. @# a# x6 |9 MDB::result(): h# y# W9 a0 W% V- O7 b
参数:
5 o' t/ [2 m" v0 f: Z$resourceid:数据库查询的query资源
8 X! T) n6 E; H) E6 V( B6 Z$row:指定行的第一个字段, K. R7 t4 }/ @
实例:
( R, l$ Z5 {' ^% k$query =  DB::query("select count(*) from %t where id < %id order by id",array(* k1 c: B( }( w& d- }% s
'test_db',10
) y" O0 U+ k1 K8 ?% Y5 V0 X! e));* f7 E3 [" `7 t# R# Z
$data = DB::result($query,1);
) m0 ?3 a1 D+ l, I  v6 _" Z8 v! c" |: P& }8 Z2 Z, J) F
常用实例:2 g8 A. z1 J9 u6 {, Y0 e
$query = DB::query("select count(*) from %t where id > %d",array(2 [: T! S; x  e: I5 R; `' |
'test_db',7
( A7 v0 y# c7 S- m: J7 z));
0 d( S  w# O5 [  w+ h$data = DB::result($query,0);
2 ~* D) J( e/ ^! t+ I9 b& x7 becho $data;* ]1 M) L% U: T- e
) Q( a6 T: k( C, B% I* Q( F
资源集行数计算(不适合统计太多的资源,速度慢)/ s2 I$ I" d  N
方法:: N/ \' y9 q! w
DB::num_rows()( T2 e% q- e) P' u7 {9 ~( c+ ^1 ~0 E
参数:
4 e& [1 J) ~9 e: v$resourceid:数据库查询的query资源  ?5 R' i# G) {& X% A8 a8 m1 O
实例:& |1 }" @  H8 e( Z& S) n
$query = DB::query("select * from %t where id > %d",array(6 \0 R( [5 T# d/ |4 h
'test_db',76 a6 G( F" {9 `; A0 X# n
));
3 D! z( Z0 p% B) U7 @9 F$data = DB::num_rows($query);; J* s# [9 `& ^' c; F: B
echo $data;/ U5 q, u+ a) v9 _) O9 g. S6 I
- h1 O; ^7 W+ M$ E; W3 e6 J
资源集资源释放4 B1 ~$ m8 t+ z, v2 i" a8 V
方法:
6 F+ r+ v) a5 Y, vDB::free_result()
$ G& w! d- u0 {; u7 J参数:
  W3 E: u3 [/ I( z5 b$query:执行SQL语句的query资源
6 u7 R  i# ]1 r# W3 ~$query = DB::query("select count(*) from %t where id > %d",array(/ J$ F' H7 A2 L8 U
'test_db',7: }; W: ~) j& U5 h
));* f% c' d7 y( T: U6 h3 |) Z
$data = DB::result($query,0);
! o, z9 q" F& H; i7 n# S: |DB::free_result($query);4 G& k7 [: ]% d, J$ T
echo $data;3 N+ H* v5 H; P" L3 g- n. K6 {) V
. R, d  Z' w) @$ G2 R
按字段排序0 X" L* d. U  v5 ?. k
方法:
2 w& K5 ^* X, n+ Z- \DB:rder()
2 K( W) a# o6 L( ]( L- ~参数:
: {& W) c" ~, L* c% [1 B2 C$field:需要排序的字段
' o' f& E7 J5 s  r$order:排序方式" t* S; x2 s) I( W
实例:% h0 M" u% B. K, J3 K( q
$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(- G/ r% ?! F2 f7 }  R
'test_db',72 F+ u7 b0 B% [) W0 e1 [9 k( r
));
7 \( K! q) O# d$ p- S% e1 Z( d$data = DB::result($query,0);6 f6 N5 K1 A4 F. a3 D  ]
DB::free_result($query);
/ z; R/ r, U: i) J$ p+ j+ T$ Vecho $data;: ]/ ?! f& G+ H- _& E7 k* W2 t

' y( \/ E7 ~# y6 x6 K4 i" M取值区间设定
0 Q2 {3 R5 D+ j/ g7 {方法:
6 B6 s8 |+ @4 D+ q8 Q! V+ z' o. EDB::query()
4 v6 ^; Y1 W  a* j. Q+ G参数:% _7 S4 H/ q1 L# P3 ?( b: V
$start:开始的索引值
" L8 j7 s& ~, Z: R$limit:条目数
/ X$ z1 X+ T9 @+ e7 @$ w& \& h$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(; f. v- o, X+ c) b' K- s
'test_db',7
$ e; r% Q" V0 G));
- F' o$ G0 [# F% X" M& B' z: e! {1 ?2 D& H
字段拼接8 k( A% X+ l  T) h2 @' p
方法:5 x+ {, g9 M- b. F
DB::implode()
: j7 q0 Q& ?* ^; r! F参数:
; v9 i5 t- o7 M3 B5 @$array:需要拼接的字段数组
/ M' J# a- |6 c' ^  n$glue:字段拼接的字符串0 v# a* l, E$ _# X# E4 C) N
实例:3 w2 a9 \4 ]1 G3 M9 J
echo DB::implode(array('id' => 10,'name' => 'ddd'),'and');2 \/ F% a/ V$ E' T2 N* [

8 \' s# Q, A' g! {. w/ {应用:
8 R, D- W% Y3 @DB::query("update %t set".DB::implode(array(
) G* E4 M# F5 L- j! H( ^$ B! b'name' => 'ddd',
1 z( ]3 a# \1 |  n, W7 D% \' C'id' => 22- M$ g6 N  H$ |+ V, _
)).'where id=%d',array(
" t7 k3 z" @$ a'test_db',6 B' e- `0 I- P( M0 Y
10,
7 ?3 x9 ]; H5 m. A, F% o)" U2 {2 v, Q2 B, U/ j: j$ G6 Q( @
);
3 E9 I3 y: n6 z+ t  Z! j
% k% `/ _( x6 u- V/ I" q2 a字段数据设定
; r6 p5 s- v. ?( x0 I6 h方法:& m' x1 d8 K  J4 X
DB::field()
. V" |3 z$ R7 f& J参数:( B1 |* S8 m3 j/ K. z, U
$field:需要排序的字段
, f; N0 C1 p, {9 q0 t$ o! P' Q$val:字段对应的值
. Y  }4 D  A3 r( o$ x$glue:连接字段与值的类型. a' G' k3 n8 C$ }& U
实例:- s) w) m' r- t  `! g8 W# t2 A0 W& H
DB::field('id', 99, '=');
$ m; H" f  S8 ?- p9 F: D
6 e" d- P. s" o应用(把3改成99):
3 G! _/ P' V4 K. c& ZDB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array(
/ k$ I$ \. p) darray('test_db', 3);
; Q8 q5 \, _, W! m- u));
/ x! Y+ d4 D4 x6 [

想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
江山狂念 发表于 2020-1-21 00:36:58 | 显示全部楼层
路过,学习下

回复

使用道具 举报

张红霞 发表于 2020-1-21 04:50:36 | 显示全部楼层
好好 学习了 确实不错

回复

使用道具 举报

bogewl 发表于 2020-1-21 05:08:25 | 显示全部楼层
谢谢楼主,共同发展

回复

使用道具 举报

1287252690 发表于 2020-1-21 16:06:29 | 显示全部楼层
帮帮顶顶!!

回复

使用道具 举报

123男神 发表于 2020-1-22 02:27:59 | 显示全部楼层
帮帮顶顶!!

回复

使用道具 举报

岁月神偷 发表于 2020-1-22 03:04:33 | 显示全部楼层
路过,支持一下啦

回复

使用道具 举报

666男神 发表于 2020-1-22 03:20:40 | 显示全部楼层
有竞争才有进步嘛

回复

使用道具 举报

 shu1332725 发表于 2020-1-22 15:30:59 | 显示全部楼层
写的真的很不错

回复

使用道具 举报

373044885 发表于 2020-1-23 04:40:42 | 显示全部楼层
我抢、我抢、我抢沙发~

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

QQ|Archiver|手机版|小黑屋|罗码 ( 粤ICP备17073043号 )https://beian.miit.gov.cn/#/home

GMT+8, 2026-9-12 03:09 , Processed in 0.178086 second(s), 57 queries .

Powered by 罗码网络! X3.4

© 2001-2017

快速回复 返回顶部 返回列表