坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

[复制链接]
坏蛋网络官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:( I. j7 @7 Z0 m- M
方法:; c$ B2 N4 k+ X. i: i8 Z
DB::insert()' f! `( ?0 X+ U0 U3 ^3 M
参数:3 A/ W( j, L8 s' Y
$table:插入数据的表
8 @) o/ L6 z- ]( d$data:插入的数据,字段对应值
! x) k: J' g& ~& O; F- o" C1 s$ ^$return_insert_id:是否返回插入数据的ID
- U. N6 m8 k* J( }6 C" m9 ]) J% Z3 P$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新); p( d# ~9 Y6 J- p' j8 M, @
$silent:操作失败是否不提示
+ I# d( e# J. t6 m0 T, n$ ?$ T: t; Y; u! f. q8 m; \
实例/ ?  H  v/ W7 x4 z# I0 I0 z3 O
DB::insert('test_db',array(+ @* N; l- z+ {# z5 G0 |
'name' => 'ppc',
% c* Y  K$ ^7 ]( O),true,true);, i% g! {- C, M

' Y6 {9 m! Y5 _" P$ s数据表删除:( ?1 m9 i' z# ?; o2 _
方法:/ S  B, W2 A. J! Y0 h; l$ b# |$ B
DB::delete()' F3 p8 U  N1 z: h  X9 ?
参数:
0 q8 P3 L/ B( |1 R$table:删除数据的表
0 J3 Y: W8 Z: V. O8 U0 H' g$ g9 K) O$condition:删除的条件
/ c, E1 j1 |( k4 ^" X$ L) |$limit:删除满足条件的条目数
0 t$ C6 @, q9 T( a2 o$unbufered:是否使用无缓存查询
7 y1 C9 |5 [' f. Q3 `3 X; _1 y; Y! f' n) o0 ^' ^
实例:) v. H0 K. d: i* Q8 y6 [8 B2 V
DB::delete('test_db','id>2',1,true);m* B# m$ [& w4 A. m
# v, r- U- z; m' d0 o
数据表更新:
5 S& n5 B9 f5 V方法:) Q. ]% |7 e* ^8 k" F( m
DB::update()
$ E; G! N( O$ b) H( B7 i参数:
; ?0 K' T$ y! Q$table:更新数据的表2 S4 D' L( J! y8 m
$data:更新的数据,字段对应值
7 ^; @' u5 \8 P8 e/ W, q9 G$condition:更新的条件
/ Y$ ?6 D4 l! e6 S2 T7 x+ l) N$unbufered:是否使用无缓存查询
" e5 L: H9 m! J7 A0 M# c3 V" p2 y$low_priority:是否采用无锁表更新4 T6 ~; g5 g2 G3 W  Y9 l$ O

% ]" @5 z& K7 w$ M数据表查询(单条):
7 i$ w* Q+ N5 s9 T& p方法:: D- D+ ?! o) f2 s# w8 w$ u
DB::fetch_first()2 ^5 n) Q2 H; K& r+ z& O
参数:
% W8 ^+ C" I6 ?1 |6 K/ c$sql:查询数据的SQL语句* L: T1 g7 ^0 a' c1 W
$arg:绑定查询的参数
6 ^: S7 V7 ^- R4 o$silent:查询失败是否不提示! F! l' u& o- x; }1 e- T
实例:, v  `8 T5 n+ s& W# q( v
$id = $_GET['id'];
( S* }0 f7 G) O! d7 ^DB::fetch_first('select * from %t where id=%d',array(
2 E* Q; u6 T. `. N'test_db',$id! S9 N( l8 d0 L& {* t* W7 f) O
));" p4 y( z: _" Z% K7 q

  G4 {4 F0 r( ]% {4 k2 J5 HDB::fetch_first('select * from %t where name=%s',array(
( r  y( o# ^5 N, I'test_db','ccc'
, p: H7 q* R0 B));
* F9 B: r0 ~# i4 B4 U# I' t3 W9 u' K0 f# D! [- f

) H4 ?# Q# L- G; a  T) q$ L6 u0 E9 }5 v" @" O7 r- s
数据表查询(多条):; c; r2 _$ w, X+ z9 H4 @& [2 H' x. p
方法:) L0 q8 h  @4 L8 T  e, U
DB::fetch_all()( j( i  x* A, g2 p9 D
参数:
8 S9 y/ [8 a/ z$sql:查询数据的SQL语句7 v$ s+ ~* R( _
$arg:绑定查询的参数& |* D9 V1 @* R) H, t2 T  x# |
$keyfield:一维索引的字段名称! L2 Q; b& F: A; @$ v9 E
$silent:查询失败是否不提示7 u3 H. e- X8 X5 J( w4 |5 j' i, f
实例:' m, J. B1 O! ~' X& y
DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(+ l$ C6 Z7 a1 @3 y8 x
'test_db',7,10! O2 E) l2 I7 E; c/ m- d/ U
));
7 i" y6 g/ o; @# j  h/ w. T- A" a
DB::fetch_all('select * from %t where id IN (%n)',array(6 b& ]: \8 ~; H9 X3 l. L- h
'test_db',array(1,2,3,4,5)) {1 `4 U- ~% {- R: f
));
0 h; M: r& }( L* T4 W/ @! r' M% O& n
数据表查询(单字段) 常用于统计查询:; s# n6 Y( Y  {7 T
方法:
& o3 T- Q% }4 |1 |3 b# z) [DB::result_first()
: w/ z% o! X6 s* V$ Y) I* ^参数:
  F0 w! X7 F% z- d6 x+ x$sql:查询数据的SQL语句# c8 p) B2 W( U* L. d, E" a
$arg:绑定查询的参数
- }# L  M7 Y# ?9 q* M/ W2 b$silent:查询失败是否不提示; G+ r7 m: H! k6 m4 p' ?
实例:
# ^6 a2 p) v: rDB::result_first('select name from %t where id=%d',array(7 B& `; A2 }! @
'test_db',1
; V/ X# T( Q0 j+ B3 }. l, y4 s+ Z));: U0 p/ q" P" Q3 I+ C

# f% \. R# i0 v; u4 V$ t4 bDB::result_first('select max(id) from %t',array(
4 {( X2 @$ r9 M+ [8 i+ |- r5 H'test_db'
/ g1 `/ b7 X1 G3 I0 Z$ d6 ?9 p));! e% v& i" ^/ u/ G$ a0 L: v

* S4 {) k' S- n  t* ~# @1 u1 F3 o- p; `数据库自定义query5 z* e' D+ B6 M6 q+ d# B
方法:
+ k& B/ ]) i. v3 t- oDB::query()  l& f9 m3 M5 O6 r6 d5 D3 _
参数:
1 ?9 f; [3 q* [$sql:自定义SQL语句! z$ o$ z& m2 |; I
$arg:需要绑定的数据
3 u0 d  G4 s1 X2 U3 T$silent:执行SQL失败时,是否不提示
- s; j5 d! u( C: v) R, L  e: N$unbufered:是否使用无缓存查询
4 E% U/ m" d2 @' K实例:9 f8 T/ C, V3 g
$query = DB::query("select * from %t where id IN (%n)",array() U% l& w# @3 e. c4 R7 T6 Y/ q
'test_db',array(1,2,3)
9 ~# D" P; ?% z; d/ c));
. E! q  y; A+ O. Zdebug($query);8 h# S. ]" a$ L: M8 X* F' ]
2 ?- V& \7 d& E7 S" c7 \
删除
" c+ o4 d3 ?& j9 i& HDB::query("delete from %t where id = %id",array(9 d9 g1 l4 q8 `" [- j7 e3 r6 A
'test_db',111 d  S/ O+ a/ d6 v) G  B2 K
));
6 g- B* j9 B1 |0 |) O1 ?% S. p# @9 I5 r7 y" A4 H6 O1 m2 z, \$ a
  n# y) i3 `" X8 p5 x1 ^
资源集转换结果集
% R7 U% j( o9 `# Z方法:, I' h; f- F/ n$ I$ @
DB::fetch()
4 P/ M; y" Z% P' }/ v% m参数:9 H. c4 S( c" X8 D' Q+ \1 |1 h
$resourceid:数据库查询的query资源
, A( G3 ?5 Q/ }& |. T# U3 f$type:数组类型9 a9 o* s" H+ @% a& a
实例:
: d$ g2 J: a* I; X3 `4 o" m0 i查询* i0 k8 ~& J5 i. {4 C$ g
$query = DB::query("select * from %t where id IN (%n)",array(
, ~" p4 e" H! L7 B'test_db',array(1,2,3)3 @$ \) b* i' N
));
1 }% D$ Y9 u* w* p; j  swhile($res = DB::fetch($query)){5 d; Z  x/ q3 s
   $result[] = $res;
+ `2 }1 Y6 {* ^; s4 L0 b}
# C# T3 d1 y; h8 O; idebug($query);
  ?8 \& i6 t/ n  r$ g) a3 ^
+ V9 K. Z8 T3 G; r- A* `, s- |: m# h单字段资源集转换结果集(一般用于查看获取统计值)
3 S, }* u. Y5 w5 i方法:
( R, |4 `: K9 _. CDB::result()
9 o5 B3 h9 d1 y1 ^参数:
9 g" P4 r3 M' x! o% Q2 W$resourceid:数据库查询的query资源
: ]0 o4 S/ H) _6 Y$row:指定行的第一个字段
) y- O7 _+ H( C$ n实例:
/ p2 S; {: c7 `( F$query =  DB::query("select count(*) from %t where id < %id order by id",array(: W0 ^( b! M$ ?' U' d9 R5 v
'test_db',10
, M6 E0 y8 d& j));
( F- Q6 h0 a* D; c$data = DB::result($query,1);8 i& g& E& A  w% \1 P, t- M" d

  T5 u% z8 K2 L' \常用实例:
# A, Y( h* x6 Z8 a- n+ h$ Q$query = DB::query("select count(*) from %t where id > %d",array(
2 F1 X: W# F4 W1 L8 Q7 W'test_db',7& x; x; M+ B8 \$ o) }2 i
));2 W1 ?0 E8 p: c4 g9 N
$data = DB::result($query,0);
$ W* A' v3 f3 G/ ^- w6 e( oecho $data;
. S1 s& u. Q4 m2 P2 C6 d4 `* Y& V2 o2 f2 U# f* t% }
资源集行数计算(不适合统计太多的资源,速度慢)" D; t% N) P: [( A" w% D9 C/ j
方法:
4 v& D3 ~# E7 `1 |% b9 i. n$ rDB::num_rows()+ U; I$ R- I' {0 y
参数:
4 B1 S3 ~8 E1 J5 O$resourceid:数据库查询的query资源
2 [1 K4 b" O1 y/ `* Q实例:
8 U, T$ O) Z( e5 A2 l& s7 c% F" ^$query = DB::query("select * from %t where id > %d",array(: @% i. \/ [1 Z2 r! |" t- _
'test_db',7) q/ T! V5 X) `; v4 j, k1 e7 f
));$ E1 X9 b2 e/ w9 X2 F
$data = DB::num_rows($query);
% C% p. m% U7 a+ _( A: R7 Xecho $data;% C* G4 K' F( R9 C3 |6 ?2 T

7 t  q7 I  `* Q. g' W资源集资源释放/ x/ c2 U, c0 K
方法:
+ `( C+ U1 C, \0 C* tDB::free_result()
; J* f) o8 b2 l6 W" l2 |* H# W1 [参数:
+ a+ H9 @" [# T' y- Z( N3 z6 p2 `$query:执行SQL语句的query资源
) F& S+ o4 N' x8 }" u: ~6 U$query = DB::query("select count(*) from %t where id > %d",array(
! L% e6 [% S! {. S* V'test_db',70 |1 R$ A+ ?0 I. G
));/ S; U, G* v0 N2 v% U
$data = DB::result($query,0);
2 d3 ]4 a. j' B) IDB::free_result($query);
- f, F" c" x* V) _echo $data;# V9 {. s8 ~9 S5 z

8 A0 L3 D& u" \% z按字段排序" g( M& e4 F" a% R) G
方法:7 u& u$ D3 i& F# O$ `
DB:rder()
$ t* F* r+ Z( b6 @2 {参数:: B! ]$ i% y$ Q/ F  c3 l2 H( T. G
$field:需要排序的字段# o8 t; v/ Q, t& K4 m6 z6 _
$order:排序方式% v. V' x9 M' K4 n# p  i
实例:
, l5 g6 j& `, e) b( v% t$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(9 G! ^2 h* H# e7 ^! y& Z$ D
'test_db',7
: @! `3 f5 T4 @) f: K));% h8 t! @( q( K! D/ n2 p/ @
$data = DB::result($query,0);
4 ?; B( W* A# R0 i  ?DB::free_result($query);$ [: Q* d  {! X; J# O$ x: R6 k0 M
echo $data;! X& D  w) G1 |2 Y2 \0 A, W9 z

  y1 g7 E" W( z取值区间设定6 a2 W( P) A/ |, i" `- Z4 ~" X
方法:* ^/ r. |: X* ~- d, M% v+ G; F# M
DB::query()
3 n; L; o3 v" x$ S# S参数:
  P2 ]4 V. {2 g; F/ y! b6 z, W. _$start:开始的索引值
8 r2 J; I5 x7 Y' U$limit:条目数
- h# x& M/ D, r% V& E$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(9 W) d; T5 o" f2 ^7 }. ?
'test_db',7
) ?# L1 i$ B3 C- ]( Y" t" }));$ I* K4 y& B+ Q' y

, P5 @+ z5 }  r* Z字段拼接
& r3 c5 ~( e: `! _/ x( @方法:/ T7 _- {+ }; y$ A6 v
DB::implode()! g' X2 ~' V8 G# B; E: H7 t0 R3 |) c
参数:
; m. Q0 U) F2 A; i2 H% K$array:需要拼接的字段数组
( b* Y" H$ j, T, I$glue:字段拼接的字符串. \6 _# ~% I% f2 A9 v. o: Q8 r2 I
实例:5 a. U5 G$ \  B1 Q- o' V9 Y
echo DB::implode(array('id' => 10,'name' => 'ddd'),'and');+ {( L; ^, @9 i! J4 x
+ _- q! K0 F0 a
应用:, P$ A' v0 N. J$ C  O; b
DB::query("update %t set".DB::implode(array(
! v; R7 x1 c" B" w+ ]" }5 {3 O'name' => 'ddd'," z+ a# }, {5 R, K& |
'id' => 222 ^( `8 ~' }7 n& N  u' i8 m
)).'where id=%d',array(' C! x( y8 }8 Y! t3 x" j* e& ~
'test_db',
9 H1 D& x! k5 I  O, H10,
3 s3 T) a% }+ M3 x! Y)
3 P! J4 [" C* C# Z, y+ E);! X6 C0 k+ V* ^4 f) C
+ X9 j/ t2 `- F3 B0 h
字段数据设定
) |! C1 p- _6 {. J9 d方法:. D/ x# q* L$ h' }& l  ], g  Y" n8 c
DB::field()9 ^3 L; k" c1 r) l$ h
参数:8 k1 t! S* v1 c4 w* G& _# W: }
$field:需要排序的字段
# }0 G( y8 p4 G( e6 W% a* C- s7 }$val:字段对应的值
, `* P1 q* [. H% j$glue:连接字段与值的类型7 J/ `) ^) o8 }, z2 i/ ^
实例:/ A) k, H  ]# u, f2 x
DB::field('id', 99, '=');/ x) |# C6 S1 t: H+ T$ O: ]3 Q

9 v  H5 v  J2 w- f应用(把3改成99):+ {% b, U- ?% X& G% H8 ^
DB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array(
/ n) g" W7 W% d+ ^7 w5 Qarray('test_db', 3);
# B0 x- T8 p" `% H% ~! U));/ J0 o( m  b, ~
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
江山狂念 发表于 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 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

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