坏蛋网络

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
开启左侧

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

[复制链接]
坏蛋网络男神 实名认证 官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:
3 ^( a8 y' v  G$ N方法:
2 j2 F8 |! c6 y  Y6 V# x- ZDB::insert()
5 M1 m8 e: c! ]8 F" H$ G0 V参数:$ v" X4 M' j5 G4 O
$table:插入数据的表3 D, f( [# v$ v4 I
$data:插入的数据,字段对应值
8 C$ B/ z9 S1 m4 b3 s# z$return_insert_id:是否返回插入数据的ID) E' Z$ n" F# X
$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)  W7 I* X/ s& _; b9 H
$silent:操作失败是否不提示
- q: [2 V7 u2 \& C1 C( ]
/ L- ]" O( y$ g- U' U, E实例
# s- q7 D' Q  KDB::insert('test_db',array(
/ Y& E# H- G) R. r5 B( ~'name' => 'ppc',
9 |. c1 A( I0 X* x  f),true,true);
8 H/ ]5 I; R/ `, ~
! B. V" E7 \/ s) I数据表删除:
$ ?' s, F# S( q方法:
$ M3 y: y' L6 R8 ^  RDB::delete()
, S* ]: _+ f& ]6 m参数:
# r" k" M( J( |& L; C- k$ i- y$table:删除数据的表' Q6 @( n8 ?5 S
$condition:删除的条件" J) y) z1 W) ^$ Q0 y
$limit:删除满足条件的条目数' b' f1 g6 F" W8 x/ l% F& i
$unbufered:是否使用无缓存查询
* ]* g" k: T  r: ]
, O5 \7 Z$ n; C& k2 r; n5 v实例:
4 k- U7 }' d7 E+ G) uDB::delete('test_db','id>2',1,true);m
; D( W# z' H4 q8 h  @# y9 _& n4 Q7 T% q% g$ O
数据表更新:
8 P% m5 p( z4 D9 K" d方法:
4 n1 {" R) p) J0 `- |+ }* lDB::update(); t, |6 a7 b7 R. s& E% ~$ Z) |
参数:5 I4 w% t' @* G% n/ x+ ^- A
$table:更新数据的表3 e  R, N# v  h& D* e4 F2 e
$data:更新的数据,字段对应值
+ w9 `: n" M1 J: ~7 f6 a$condition:更新的条件
% i2 p. N  @" D3 m. C$unbufered:是否使用无缓存查询/ S" ?3 e% |( M9 W) L' {# f$ {
$low_priority:是否采用无锁表更新
8 U( W& S5 a3 Z$ k+ t7 Y2 g0 h+ t4 g, t! O: }0 \
数据表查询(单条):" m6 b. f3 P0 m3 }. J
方法:7 I5 e% T9 b; B$ a! U
DB::fetch_first()
6 v" W: l. g- K: D) m6 N参数:- ^/ }4 A) q* W& ]- m3 ]
$sql:查询数据的SQL语句" }' _  ]* |! D3 s. x/ d' u- X9 N
$arg:绑定查询的参数
* R" k) k1 m9 B( y' n$silent:查询失败是否不提示; z' J- l% `: U( _. T7 H0 r. O5 u+ b" ~- _
实例:1 f! c5 _# B: c/ [
$id = $_GET['id'];
2 h* I) B" }* e. C: aDB::fetch_first('select * from %t where id=%d',array(
) v# n7 N+ u( z1 D; T7 U3 Y'test_db',$id7 j. ?5 j) T# Y! A8 n) S7 l& h
));( c3 s8 Y! z# i, H9 U4 ~
$ s$ U& _) g) Z7 X1 a
DB::fetch_first('select * from %t where name=%s',array() N! \4 ^) w8 Z) W. N
'test_db','ccc'
+ g" j+ {) e7 x! @4 r));. D+ [  _+ G. F
. }8 a3 Z" |, j
  G5 T( `6 N9 ?. a/ A) h% o
# G5 J$ E7 [. ], H8 U
数据表查询(多条):5 Q2 b+ ?) n- H  R1 l
方法:% Q* a9 N' x, q. b
DB::fetch_all()% Y5 U6 |; W% i: x
参数:
. ?0 {( H4 z. ?+ Y7 m1 P$sql:查询数据的SQL语句
" n- B# U) \2 s$ _& L. P$arg:绑定查询的参数
9 @$ N. Q; @! [" H$keyfield:一维索引的字段名称4 G: ]" t0 J* c1 H7 @4 p
$silent:查询失败是否不提示
2 N' I. B7 Q5 ^% y! `实例:
' M% {$ a+ u) q3 hDB::fetch_all('select * from %t where id >= %d AND id<=%d',array($ Z' ~1 y$ t2 p
'test_db',7,10( e4 R$ `2 {& `1 @+ r1 q
));
: L; }+ F& |- x" Z% z. {& j0 r* z) c8 W2 w6 r8 ^+ D1 |
DB::fetch_all('select * from %t where id IN (%n)',array(
; J: Z& H( M9 ~! _7 X# O$ v0 X" X'test_db',array(1,2,3,4,5)  M) |% X3 b5 r5 k) X% Q
));& z3 k# Z$ @8 S) C2 u0 m) Q* Z
' g  [( G! o; `# x4 q& Y. v0 E  y1 `
数据表查询(单字段) 常用于统计查询:
  Z2 c8 q1 A3 ~) s- |! S方法:
  o# k* I$ \: d- XDB::result_first()
  F0 ?) z# Z# D5 N8 }参数:
6 K0 x" d6 G& f8 e# j1 W$sql:查询数据的SQL语句0 {  J0 @" E7 g) H  R
$arg:绑定查询的参数& t: x1 u4 R2 L0 N
$silent:查询失败是否不提示. H) @, A* p/ J5 i; k; R
实例:/ r4 E4 c. |1 @& e3 b; X
DB::result_first('select name from %t where id=%d',array(
* u; M5 {& J+ p. P( t'test_db',1+ @* @7 @3 D$ B* Q" c2 f# `
));2 I: \; p" D! e. ?
6 Z" Z/ P- {# `  r
DB::result_first('select max(id) from %t',array(+ @& [; J  \- {& t
'test_db'8 ]0 c) e3 O) E1 s1 F
));
( ?. e  d/ [/ B9 [; t* r/ Y( Y5 r: m6 t# n0 _8 r" E1 w6 [
数据库自定义query7 I0 Q) \( w) ^3 M% \- f7 j
方法:
( Y" H& m. a  Z0 B8 j) Y" PDB::query()# ^: ]3 ?% ?! r7 s8 m
参数:3 [# `3 g- z! i  T/ n
$sql:自定义SQL语句* s( h) O0 i5 a6 P  f' G* b+ ?) `
$arg:需要绑定的数据8 O5 H5 D* m. c2 o! y+ Y' ]
$silent:执行SQL失败时,是否不提示) [+ m* x) T( p0 f; o1 r
$unbufered:是否使用无缓存查询
# S( X8 {; H& ?/ P) u实例:# J6 s' Z. D; [  _2 h
$query = DB::query("select * from %t where id IN (%n)",array(7 Y5 \; _! H, G9 B% V
'test_db',array(1,2,3). S) x6 Y0 Q, \* j  M! y9 D7 |# }
));
3 B  x8 I' R& R3 u! odebug($query);
2 ?+ C" E" h+ V7 H4 c
$ O" o! _3 I5 G# ]% P0 O9 F删除+ r7 e: Z+ Q) w& C1 T& D
DB::query("delete from %t where id = %id",array(
+ X0 S' ]4 E8 H7 a0 J- n6 @'test_db',11
9 q7 x8 Q, ^% ^" P2 g" u));
0 @* x/ B2 e6 q2 g0 q& \3 |
5 A- y% Z; Q: s$ }' h1 h9 s; S/ K) e$ d: T) s( t
资源集转换结果集5 ^" I+ S; w5 W& x! c
方法:8 n% i5 H0 d, q6 M+ A
DB::fetch()
$ F: H& _5 H! r/ ?参数:
2 r: v3 I/ c" W: y$resourceid:数据库查询的query资源  V0 V# w3 v, B! B5 D* B
$type:数组类型
0 }1 \/ i$ Z9 T实例:
- K* d8 Y6 `. {1 M+ L. s查询: E7 b0 m# s. c0 u9 Y7 l
$query = DB::query("select * from %t where id IN (%n)",array(
' D# U5 b5 o0 i! Q3 q. J4 V'test_db',array(1,2,3)" V( X0 \& |, o7 T/ ?" b
));
8 b; R, @8 m, pwhile($res = DB::fetch($query)){
/ a$ C( n) f. w8 {  `" z: a5 D; h   $result[] = $res;3 @* n6 d8 u) v+ E# l. f% `+ i1 S
}
. U1 U8 D% r+ _debug($query);
: e8 A3 u$ k. s. u, j1 P2 j' S" n/ G8 e8 `' a; l3 D/ g7 r8 c
单字段资源集转换结果集(一般用于查看获取统计值)
. X. Q& J% z5 `+ G方法:
% `2 w$ h3 ~% U" B7 A  r0 Y0 U+ {" ]DB::result()
1 S; n: \* Q; e. O7 t参数:- L4 G3 h+ ~4 a  }
$resourceid:数据库查询的query资源
! Y% y) Y6 d: k$ g6 U$row:指定行的第一个字段
. ^2 ~8 B( A* F' F实例:
2 C+ y/ q7 X2 {$query =  DB::query("select count(*) from %t where id < %id order by id",array(
$ K8 P( v) I- _+ x'test_db',106 p/ ]$ T( V4 K# Z7 W4 K, I0 A
));
( z4 [. @$ Y$ e1 _$data = DB::result($query,1);1 M# a5 a8 L6 u. \0 }

, A2 v! W2 ]6 s: U常用实例:1 s/ v2 H1 o; G% f
$query = DB::query("select count(*) from %t where id > %d",array(, A7 C. @! @* M; ?, ?$ a# E5 e
'test_db',7
$ A: J. I7 J3 m4 o5 c+ x+ S% S));6 g9 ^# }' B% ^) c0 Y
$data = DB::result($query,0);
. N/ q' a+ @2 F; Q! j' ?2 W0 r' eecho $data;$ d3 ]% z, A# Z$ i0 R; F; N; T3 }

- m& ?' X6 ^9 ]' b) P+ o资源集行数计算(不适合统计太多的资源,速度慢)9 }' H4 G8 H- _
方法:
- ]/ V( s  L, TDB::num_rows()
. y9 U3 ~9 [4 A+ r参数:
# n$ f! \' m  q" _. J- a$resourceid:数据库查询的query资源
' v9 B6 P) |# D: a$ u( v8 X实例:) _+ b/ j9 L' z# O
$query = DB::query("select * from %t where id > %d",array(1 c/ ]1 D; e4 h0 W7 r" P3 S$ ?
'test_db',7
1 V3 Y0 S7 N1 P2 T$ P: _  C; x));
, k& l1 q7 K0 o  R$data = DB::num_rows($query);; P2 F- v1 |" z9 _
echo $data;2 N! h; c: X( E

0 }( r3 y# K- O2 |: K' _5 |资源集资源释放
: S% W$ Y0 f8 ?方法:
. |- I, }  D! ~; JDB::free_result()5 J# j- Z5 j- g6 P
参数:
% `( G+ f$ W. J  G5 k" @; b. B$query:执行SQL语句的query资源
( v* g! U% [$ W6 d' D4 }$query = DB::query("select count(*) from %t where id > %d",array(5 `" Q" x9 S% m& r. D
'test_db',7# K" ~3 o) Z+ @* Y, \% ~
));4 F4 L# d" j6 C( p% f: H! C
$data = DB::result($query,0);
' E9 \4 u- r' a9 i9 e. H2 e9 O& ^DB::free_result($query);
' r: a6 Y" [( p3 D* }; n/ u9 lecho $data;
% S9 Y8 x! \/ Z, T& `; d4 z; p1 o) I! ~
按字段排序9 T" w4 a8 ?  j  i
方法:
3 `4 x2 P( Q; ^. w6 W# m. E9 [$ l. eDB:rder()5 A) [( e$ o' M! N" q/ h
参数:1 i9 C) N4 K; E5 o
$field:需要排序的字段' i* P0 S) v6 l0 x5 N$ r, d
$order:排序方式
% r8 {' e: m; r; T6 G& R实例:) M5 b" i9 U- l( X
$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(& q9 I5 b5 J' T, ?/ s0 c
'test_db',7* r1 Y" q* b; B7 P
));4 I( [2 J% }- s# a; ~
$data = DB::result($query,0);
9 q: M1 L0 N% {  _: wDB::free_result($query);  P& }; P$ n' j- l. K5 x! ?/ ^2 w
echo $data;2 l" Y0 d% G7 c) R5 Q
5 X/ @8 w" ^7 q
取值区间设定
) l" B! Y6 q) T* n方法:
. I2 ~: [+ _  EDB::query()
& T$ S3 ?) g4 q8 b参数:
& u5 h6 {: E  G2 C- `; n( Y; P$start:开始的索引值6 F" h4 d* r: S  x" T; w; Y- ]
$limit:条目数
0 R/ l6 p2 w$ z$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(
4 `3 F8 P/ @: W) j! r* w'test_db',7
. a* M& I! F1 U7 d: V! _  j));' n4 n/ l$ X% X2 p$ {
  p! y# p: Y' f8 D- g
字段拼接
$ C0 @3 M  c$ e' F方法:
  \) h( {6 G/ n3 t; h* @7 E7 pDB::implode()
5 O4 ?: t3 T; H) \& W- `2 q1 K参数:8 u4 ^' k3 y% D; W+ M, `8 A
$array:需要拼接的字段数组
' y5 K. a$ L" j& G( _% D0 l) Y+ x$glue:字段拼接的字符串
1 }3 }8 Q2 ?$ l4 |( ]  K实例:$ [* c7 o0 Q4 A5 v! u( p
echo DB::implode(array('id' => 10,'name' => 'ddd'),'and');
7 f* h) r6 V4 u0 v/ _' }  D% `7 E/ n7 }& h8 W7 G% H
应用:
, i: x9 ]" r' }9 W+ ^9 GDB::query("update %t set".DB::implode(array(
" h" {. j' n. `! a7 s5 B'name' => 'ddd',
# {, |7 ]- p$ u'id' => 22
* Y, |: d9 X# }2 s)).'where id=%d',array(
6 ~* A/ u& @4 \: X/ e$ P3 w- O'test_db',* O1 W& L( T$ D; F. ~5 T# k; e
10,
" D0 E8 g5 |: B5 ^2 C)& `5 i: M' c9 G2 }  t% _; C# b3 s3 \5 b
);
7 w7 E8 }# e6 r  A" m# G3 {, Z* \2 d$ [/ }# C; K' H) E- A% ]
字段数据设定
- R0 V, b+ v1 W8 l/ p% n方法:
! d# }; u8 p0 H7 O2 c7 t4 d$ YDB::field()" S2 J2 r4 v5 w+ h0 k( c+ b( o/ j
参数:
$ }( T! W1 T3 h; Q( I2 p$field:需要排序的字段+ t  L3 Q( }/ g* v4 n5 ?2 g! x- x
$val:字段对应的值7 t( ~/ N2 J0 F! x# v% c2 L* c
$glue:连接字段与值的类型( b) k2 R% `2 N( i: g; i
实例:, @* D- j9 p9 g. \% y2 H" x4 Q
DB::field('id', 99, '=');
6 D6 w; M$ b* Y. y* J, D9 ~# Z
) |) ~. w" N9 p# O应用(把3改成99):
: ]0 z# j# e7 J* BDB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array(
9 U3 O$ _7 ~5 {9 K( Warray('test_db', 3);
/ @, e7 J1 k3 W5 o; u# y* F));
- m. K2 x/ L6 l  C5 u2 J3 Q9 l
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
江山狂念 发表于 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 | 显示全部楼层
有竞争才有进步嘛
回复

使用道具 举报

杨晨女神 发表于 2020-1-22 11:03:44 | 显示全部楼层
路过,学习下
回复

使用道具 举报

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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