坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

[复制链接]
坏蛋网络官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:
3 M& Y3 x* ^6 U* i5 Q方法:% G+ @/ V6 J* e9 _+ d" J- r% W
DB::insert()
+ F  F( A- Y# }2 D' ?) D& p3 s参数:/ s$ F& L/ a; n7 d+ q- a8 ~* C
$table:插入数据的表
  S5 e+ Q7 {, s  ~* [( k( C4 j$data:插入的数据,字段对应值: ^  \5 C! @4 ?
$return_insert_id:是否返回插入数据的ID
0 }8 L; V# `6 |& h$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)
2 q0 N" |/ [/ L+ G! a, d" s2 Y$silent:操作失败是否不提示
  C8 t& w( W, p: N9 t+ V
' r- o! b) A" s% s7 {: ?实例
6 `# ^. f- e8 H, q7 y% BDB::insert('test_db',array(& G0 s# h" }: ~1 r2 x  B9 @. e
'name' => 'ppc',
$ \& H8 R# i. ~" C' n6 H),true,true);7 q& c6 a+ |9 A; d7 z3 c
1 C( Z, C! r& S$ S9 B( P# \* k
数据表删除:
: N4 c* ?! T) h2 Y  N3 X( D方法:
6 B: q9 f6 n0 a  E: U; W3 YDB::delete()& E. S7 [1 M5 w3 I
参数:
" R' o2 e' b# D7 u$table:删除数据的表' O# H& U6 m7 i4 P5 a* m; i# X# W" e
$condition:删除的条件  d7 G4 W' W0 O& y# n% `8 ^! u
$limit:删除满足条件的条目数+ E! B# s' e) t3 f7 p
$unbufered:是否使用无缓存查询! x# ?8 i7 P  b: [* x8 i  T# Z1 K1 Y

0 Q# \$ |% |5 o- e/ m实例:
4 `5 K0 k. h# h; PDB::delete('test_db','id>2',1,true);m
/ x1 X! l" ?& S: U
& T1 u* v; z/ F! H/ h5 }' o数据表更新:: \. v5 ]6 R7 p8 N* q: M4 k3 _7 r
方法:
6 U) R4 K; S2 M/ vDB::update()9 s: ^) m2 _& i+ R% ?: r
参数:+ v2 Y% H! R* d% b. Y6 t" A- B
$table:更新数据的表
& X9 S" i; @6 z  i$data:更新的数据,字段对应值9 k2 Y) C% f; T' o6 r5 ^
$condition:更新的条件
' x) R' q$ o% r4 n$unbufered:是否使用无缓存查询
; Q: e1 N+ \+ R1 N+ ~& E" Y& A/ r$low_priority:是否采用无锁表更新7 C0 P; k6 J0 T/ q/ I+ y- M
4 ?# U7 b6 i3 o% ~' F) |( y( C7 M0 J
数据表查询(单条):
) \- I: Y1 Y, g/ X% j: a/ J" e方法:- e! c1 `) K1 \' s9 F9 X$ A: d5 [2 Q
DB::fetch_first()
4 s  r+ i1 j* q, Q3 K" N" J参数:
% o. m6 h6 g+ o# p6 e0 d" o* R5 ?$sql:查询数据的SQL语句
6 v* ~: v6 \% I4 f$arg:绑定查询的参数2 A; a) Q7 Y$ S7 x/ q
$silent:查询失败是否不提示
+ \  ]' K6 L4 J3 c. W( @实例:
% A1 V$ Y, G& @9 E) x' }9 ?$id = $_GET['id'];
  x( y+ a2 K4 I" v; wDB::fetch_first('select * from %t where id=%d',array(
! S' q4 w. W. S6 @  F'test_db',$id0 a4 Q- D2 C5 ^
));
" W0 R3 \2 M5 s2 \% b) k1 q! Q* `3 R1 x$ ?
DB::fetch_first('select * from %t where name=%s',array(4 I- P: f& r( S* n; t2 n' b3 }0 ]2 n  f
'test_db','ccc'
8 A7 }3 C7 {; y  S));) |- _$ ]) `# G! M9 Y$ b
+ L7 j$ S5 h: Q: x1 j

, M( u1 T7 g  ~
# y# _' r) k) U数据表查询(多条):
1 _# j& ~! [3 q  F  P方法:
- Q7 t6 N6 t, {( ~0 U0 @+ j# F$ ADB::fetch_all()2 ^. K& N' \; F6 c# [8 `  }
参数:
! Z( \! D. d" c- @, j$sql:查询数据的SQL语句
, F( K" K) x- P; W4 W. n$arg:绑定查询的参数
; s+ y! z8 a3 i- R, g$keyfield:一维索引的字段名称
6 q* a0 q/ E1 t( U$silent:查询失败是否不提示) {* S6 l1 h; D
实例:# |4 X. p1 A- E9 L
DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(" }; p$ l: r3 Q1 O8 L
'test_db',7,10/ Y9 E7 ^: z; a
));3 S2 _8 H1 F7 `

3 `: O, Y# y/ o/ }) lDB::fetch_all('select * from %t where id IN (%n)',array(
  j# l' f( x! h'test_db',array(1,2,3,4,5)2 P# n' D1 Y5 G% l  t! T
));
5 d' h  P0 O' d8 c  p
& [+ ?7 H9 n6 }1 t3 a8 b数据表查询(单字段) 常用于统计查询:
& e' v7 ^# g) j+ G. u方法:' Y7 J$ f' f7 i( b8 @& U
DB::result_first()
% x' t( y' s6 B. g; J) n参数:. b1 w% f$ l5 E8 |3 D
$sql:查询数据的SQL语句0 X' X/ k& N$ |. E( r4 h' N
$arg:绑定查询的参数+ B+ @* y: p2 m) ~* C' g
$silent:查询失败是否不提示
- X  E7 |. N' R  E( g1 P- {+ d实例:
2 u) l" `) W6 N! p# X/ eDB::result_first('select name from %t where id=%d',array(8 o# [$ r6 |4 @; s5 X- u& X7 b
'test_db',1
# [/ ]( b6 t4 ^5 W. E* l* f9 c));
3 ?. S- `# ?$ C$ @* f
5 E: e  l/ [6 r( v3 `DB::result_first('select max(id) from %t',array(2 x1 v0 t4 a9 G: U- k7 U) g: w+ C
'test_db'
' N/ y# f2 N% g6 P$ r. D$ T));, ]" e/ t  i! n
4 H* J$ E4 v! f
数据库自定义query! j' c% c) X4 |- j
方法:
. R  o; I: {/ M3 N( HDB::query()
: N- @8 g8 i3 q参数:
/ G  |  p+ f; ?4 T$sql:自定义SQL语句
0 w& [1 M1 d$ g$ O9 f# J" I$ M$arg:需要绑定的数据
6 N$ R1 Y; N/ a3 R; |/ \$silent:执行SQL失败时,是否不提示+ ?) X# \' K* A( A/ \
$unbufered:是否使用无缓存查询: f3 e' W8 X( X) S6 }' k- T
实例:
3 n! k  d6 ?9 V# N  G$query = DB::query("select * from %t where id IN (%n)",array(! S4 I8 C. x. v( \) {% Q) g3 w
'test_db',array(1,2,3)
0 X. G+ T, C8 l7 X! s) g. L));
; S5 L+ R( h  N8 m% k; r6 Kdebug($query);% P1 W( d3 ~4 A
0 v1 o( b8 r1 P4 j3 [/ V3 C
删除
6 P' {9 x4 P* `  M3 w8 ~; f* aDB::query("delete from %t where id = %id",array(
+ Y, F, v# I/ ?2 G6 ~4 R'test_db',11* W% @0 T& @) U% O9 {7 P+ i
));; U/ `- N  O" S
% q7 K, W* `+ g# K, X' |2 ]
7 }7 u' F& x6 t6 z* Q( Z& T/ p
资源集转换结果集. Q9 `5 T3 j, X
方法:
: _$ g2 Y4 o4 `; f2 HDB::fetch()& m/ `7 [* W0 N
参数:3 h2 @; `4 K8 J  k
$resourceid:数据库查询的query资源4 B! y' \  N' R6 q9 B8 n2 U& p
$type:数组类型
0 b0 \+ I. R" D% M- N" l; W' p# q# r实例:
6 Q( [6 a6 i  i5 w# ~. d1 h查询
3 D) b4 I5 W' w2 C$query = DB::query("select * from %t where id IN (%n)",array(
3 V+ @: A" b7 w; M'test_db',array(1,2,3)  b, K. {8 W' J( \, I6 y. F1 I
));
$ Q. |5 E. _' y7 {while($res = DB::fetch($query)){
/ `" ~8 b* @* o; o4 N, c   $result[] = $res;
. F  t/ O& B' L}
  j7 U) @+ s9 ]/ S1 `debug($query);
& a- a% C$ a  f9 t" ?9 o; U5 R
5 ^; f; t3 V5 U单字段资源集转换结果集(一般用于查看获取统计值)
. G' T3 d# z1 h- L# J/ n2 `1 Z方法:. P' p; h; S# I+ |2 H2 |5 {
DB::result(); K5 K$ z0 n6 I; v! ^
参数:
+ K, G2 K3 a4 F! R* U$resourceid:数据库查询的query资源, i2 `# G- E: A9 D7 A
$row:指定行的第一个字段% j. _. t5 N  p; t: i- L
实例:
3 w, k) ?$ y7 r' p" R$query =  DB::query("select count(*) from %t where id < %id order by id",array(
" U  B+ X6 I( X1 g( \- Z'test_db',10& r6 i4 l# K7 c& {' I
));# J8 s& l3 |; Z3 M$ K
$data = DB::result($query,1);
5 T8 C- D) }2 H; o, R$ A6 n! G0 p# V' c' I) N/ W. V- _3 _5 [% G
常用实例:
* n' ~8 i3 v/ k/ A$query = DB::query("select count(*) from %t where id > %d",array(
. x7 D4 f2 j* h: ^8 B'test_db',7' P6 a+ ]7 U9 _+ X$ f) i
));9 p5 p. ?% T) n3 Q# G' b0 c2 Y
$data = DB::result($query,0);
  P7 i: s4 K* ~* yecho $data;9 M6 I3 f4 \6 v! G

: A. S3 ^+ h4 e2 Y# S4 k  a资源集行数计算(不适合统计太多的资源,速度慢)% F  c# T5 p& U) j. W7 l
方法:  o, O9 |. |5 g/ h5 i9 h
DB::num_rows()  M4 p8 u, a, {" M+ v2 F
参数:
3 o  O' H) X9 c. ^: g: \$resourceid:数据库查询的query资源/ Y! X  G5 S# n+ {4 G" b6 R
实例:) K6 {( F1 [4 j/ Y( F1 _3 |/ D
$query = DB::query("select * from %t where id > %d",array(
- K( T4 ]4 u5 I8 B) P. c4 l& ]'test_db',7$ M0 E4 v& a( I: r& p
));+ ]- D4 b" j0 j& ^% E% k
$data = DB::num_rows($query);
; ?3 j! A( v- x2 H4 Z1 D. k% z; Aecho $data;& q, \7 t0 Y# h2 r0 W+ l

" ~; _2 Y" z5 q! F. Q资源集资源释放# ^7 N' C2 e/ g
方法:7 J  u/ x: N' l
DB::free_result()
  E9 V1 A' I  j. \参数:3 w" F  f# M- t* X1 U2 }9 S
$query:执行SQL语句的query资源
4 {$ o4 {$ Y! ^$query = DB::query("select count(*) from %t where id > %d",array(, u3 K% V# r6 Z$ ?) b, [. F
'test_db',75 b' e5 m+ F: v" }8 s/ z& _  F& Q
));1 c  L8 R. e- g4 p3 _
$data = DB::result($query,0);( L% Q8 F! p$ @; W5 v5 h
DB::free_result($query);
- ~+ ]# L0 X1 K4 E& kecho $data;" h2 {) r, r$ A  L! G9 U) O

5 _1 B9 Q7 R8 J7 e! J按字段排序) b( I, q. Q, F8 a7 t$ a% I
方法:
! P4 [( K' l/ w3 {+ H+ M4 sDB:rder()
. L- u9 P' A* o参数:0 u$ p$ F' r9 h8 z/ c
$field:需要排序的字段; b$ l  m4 d4 |: m- @' p/ R2 T9 R
$order:排序方式
- b) O7 R8 X, }# @* ]6 Y) W实例:0 b+ X9 k3 Y; m
$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(
  p# l+ {: O& z* H'test_db',7# I0 L( Q2 s! w# x: Y" v5 S
));
1 ?8 I7 M- b+ W" I3 w' O! Z" P$data = DB::result($query,0);
$ M/ p, _5 Q. Z$ ZDB::free_result($query);) B! t" }& r  A' A. e+ R
echo $data;9 B; l. M7 \2 f& c

5 X8 B3 X4 o/ |' o% y1 C取值区间设定; i  t  @3 R7 J6 n2 r3 p
方法:
% o7 b+ J0 X$ x4 Z! U+ oDB::query()
5 m7 b7 R+ Z$ h0 G' A参数:
4 p0 `" Z3 T7 |% s$start:开始的索引值! u' x( D2 X7 m5 A3 B, D" G& G" Y
$limit:条目数
4 u- L! q* ~2 P; l7 o/ }9 c! I$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(6 f5 N) {: t% D3 c0 l% q6 A
'test_db',73 R% B! N! [$ ]+ c- C
));8 G( B5 q! J$ D
0 _( x% X! p/ S
字段拼接
5 d; X+ q" g+ X  d方法:
' t3 W0 u* i, v5 BDB::implode()
! @6 s* U0 Q. [4 A参数:
; C  _  t+ q+ m7 y( O+ d5 M2 j$array:需要拼接的字段数组! `4 ^' I' A) r: c. s( @+ P
$glue:字段拼接的字符串3 }& p2 c) V. b2 w/ b4 }, T8 q
实例:/ I8 ~% ~" [% H
echo DB::implode(array('id' => 10,'name' => 'ddd'),'and');
6 y" Y* c3 I8 e$ u! ^7 ~9 S; L* ~6 [9 G2 i  [- F& O
应用:
3 ]/ C- l4 I3 y8 N& bDB::query("update %t set".DB::implode(array(
' I' ~1 t, L' i9 l* o0 A'name' => 'ddd',
8 y9 v+ u, R! e0 N$ w'id' => 22  {+ y( h; x* B! K/ k1 [  x
)).'where id=%d',array(
0 q, `; g0 u" v7 w( D7 a'test_db',! D! G' x4 i% u7 j
10,
5 k- @3 w" Y# A- B* [)7 `1 p: X0 Z+ q6 j5 q8 {, P" _( V
);
1 j: b3 u6 f4 P; O) g# G2 F" M) z7 c5 A/ c2 u7 ~% \
字段数据设定' M- K3 m; R' @7 J( Z! k
方法:' v$ C! m" g$ m5 W; _
DB::field()/ ?- x3 E) Q: X+ T' A0 f
参数:9 V! Z& H- ~8 ]" @: y/ h; b% d$ w
$field:需要排序的字段: W! J% w9 F/ M
$val:字段对应的值  n. I" B" l3 H3 V& R. ]$ w# g# ]
$glue:连接字段与值的类型1 Y" v  Q( F1 c- N/ V$ m
实例:
6 P" Y$ g; R( p- v8 TDB::field('id', 99, '=');
7 r  v4 \+ @& w( o; _3 h$ {5 b. l' `
应用(把3改成99):
+ B; R& }! ^/ y$ zDB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array(
4 Q2 H  `& G# p$ E$ Aarray('test_db', 3);
+ `# f' @) w3 v) i));( D* n% r; x5 z1 [
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
江山狂念 发表于 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 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

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