坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

[复制链接]
坏蛋网络官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:
! _; C! A2 j( Y/ N; P: S* V方法:' z- X" e- g/ D* d
DB::insert()* W5 I6 s! D4 g" d2 f# v1 N4 X
参数:
/ m- k9 h3 Z: ~$table:插入数据的表
9 w% m1 v) F8 r  O6 h6 D  V$data:插入的数据,字段对应值" x/ U/ _' _" X/ m; J) m. H: d
$return_insert_id:是否返回插入数据的ID) a9 z/ v, |4 ?5 ~, s0 o4 l
$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)4 W6 U  v3 h2 S8 N" x) K- H
$silent:操作失败是否不提示: K' r5 D, P, c7 Z0 J" d' \  f

  q8 _7 |: i: W6 k/ a/ @2 J实例
( k6 w0 q" r( X- P1 K+ RDB::insert('test_db',array(. f; ?' B; I4 l; e" e; Q5 W# @
'name' => 'ppc',4 ~2 M5 w& y: }# b* t* X
),true,true);7 d3 y& Y. s6 L+ r
/ A% b9 {- }$ \7 \2 z  H
数据表删除:
# P1 \- v8 B$ K$ c, g方法:
, r% |' U4 f* lDB::delete()
+ j$ g; L4 q3 y0 {; D参数:1 y5 {; j$ [9 ?' C0 |; b
$table:删除数据的表
1 F% [% G2 q9 }  ~1 ~: J7 ?1 s$condition:删除的条件$ E2 u! `+ W* u3 C  `1 k
$limit:删除满足条件的条目数
6 k( M% K: K5 I1 ?# A$unbufered:是否使用无缓存查询  H. ]/ u) r) ?1 X" I) c& c
0 W3 p- O% Y, A3 C8 v3 m) M
实例:
5 q, ]" N- i$ U8 o9 C# Z5 Z  v  fDB::delete('test_db','id>2',1,true);m
& h7 t8 Y. J6 s' a$ K0 Q& c0 T  m& U
数据表更新:3 O) k1 W) S; P9 O$ K/ Y0 y( r% I, D
方法:, q. a4 a+ T2 X
DB::update()4 e$ i' |* v/ x- `  Y0 [! b
参数:
- D& F6 `6 A3 k. H0 ]* ~$table:更新数据的表
# R6 ~& A2 d9 z6 u, M$data:更新的数据,字段对应值8 w4 {. G0 m1 T
$condition:更新的条件/ s7 Y3 T2 w0 A, q! ~1 r9 f
$unbufered:是否使用无缓存查询
" w$ b! J/ L% [$ N/ K6 t+ i$low_priority:是否采用无锁表更新
, f% S6 m5 W, d" j
/ l. m( z# u/ k9 K4 T! n数据表查询(单条):1 r5 g: w* U9 y3 @
方法:
8 g: F- f) D4 K7 E6 d8 E2 h0 }4 QDB::fetch_first()
# z' R; p! y* S$ w6 z5 L; ^  H参数:
; \9 }5 ?" g; t- J) d$sql:查询数据的SQL语句( X: u' u! H) n
$arg:绑定查询的参数! \% y: u$ ?3 I% n# V& f5 i% M
$silent:查询失败是否不提示
4 o/ x) r+ p. _4 {/ x# N实例:2 ~8 \6 O/ ~- q6 j* l
$id = $_GET['id'];
" l5 X* F; q3 n2 K! N- h7 l: s7 h# J1 RDB::fetch_first('select * from %t where id=%d',array() _. u, ~4 W1 l0 A. e/ _( p
'test_db',$id1 _1 G; S' A) ~6 s
));
0 ^. {( Q$ X# o6 k
, e7 X- T$ R' n7 r$ iDB::fetch_first('select * from %t where name=%s',array(
6 I, E- o! A3 ]# W7 v+ r'test_db','ccc'
" d! a$ c" W/ T- t% z8 j; ^% _));
, `) ^- a0 N! u* b
0 u) M3 Q* E# A. A3 g5 U; T" r, z1 p" H$ x* K4 ?
5 e1 Y% ^6 H3 g; E+ @5 D  r% e
数据表查询(多条):
" t. N3 N1 o, }  m; {. ~9 u, W方法:
4 W" ?/ z5 _- Z5 Y7 hDB::fetch_all()
3 q& J8 J$ q% J  w+ m参数:( w* Q8 N9 {$ N' |) n
$sql:查询数据的SQL语句- @7 y& k- Y( I
$arg:绑定查询的参数3 [, F) K7 j5 Q3 ~; \8 k8 ^
$keyfield:一维索引的字段名称- F& S$ H6 d5 B( U  Z  d+ ]- w% l
$silent:查询失败是否不提示
" C( L' p) H3 m: d1 B/ i' r3 u# ^实例:) T3 G) C- X# i$ d1 C
DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(. n$ C0 K+ |6 n" _; s" {
'test_db',7,10/ ]) u4 E) E, p. ?$ |( A! j5 _
));1 z7 h+ M9 {0 o: c2 Q0 e+ F

' L3 ^9 J/ \5 a% `+ ^/ W! CDB::fetch_all('select * from %t where id IN (%n)',array(- \, f4 B) A& {" h
'test_db',array(1,2,3,4,5)
, m* \( c& l+ G9 z& F# A));
! E! @  @& o) T- q2 Q* t, }- i0 g. {8 e# r& n3 e* ^3 h3 k
数据表查询(单字段) 常用于统计查询:' Q5 Z( B/ j( N& U, c
方法:0 Y3 ~% L* m" E) n
DB::result_first()
- m: Y' Y5 u5 _4 V; F参数:$ |. T' u) C0 ^! X8 r* V
$sql:查询数据的SQL语句! J1 k# U7 c1 _# W. K6 l- U) o% p
$arg:绑定查询的参数
; G( b9 X7 Q/ \) q* J$silent:查询失败是否不提示! C3 R$ M( j7 l! l
实例:
1 ~8 H8 t0 l( U& |# Z$ J2 f5 f& yDB::result_first('select name from %t where id=%d',array(; i5 I) M( }2 q; }5 x& d' P) I
'test_db',18 {& K# p* w0 D
));2 s6 W' T8 k& x! N" A/ `2 [; g
  J# w! C2 ~+ F/ M! S
DB::result_first('select max(id) from %t',array(- M6 q$ U) T- ]/ y) @) ?
'test_db'
$ I6 `7 X2 {  Z$ Y' a));# B: K1 X# p2 m  r8 c
; a" b: c* V9 U+ R6 z0 H# n
数据库自定义query+ q* i$ k. z* z3 b9 L* @4 c
方法:, c) b. y+ F9 M2 V3 z
DB::query()9 J# x# y# v, a4 L& U0 B; ]+ K
参数:
! M# ~, ?" G! K! M: E$sql:自定义SQL语句
/ I  m( e0 T  D6 w+ p- J$arg:需要绑定的数据
2 L& t. K$ k  H# \2 ?$silent:执行SQL失败时,是否不提示
5 F9 N4 t' ?8 R/ ]$ y" S$unbufered:是否使用无缓存查询
( J, ?' R- |  e  K实例:
$ P4 F) ]! P9 C3 k$query = DB::query("select * from %t where id IN (%n)",array(3 r. O6 G2 f4 p2 A  w
'test_db',array(1,2,3)1 I& H! N4 }/ S; g+ y% w: u
));
# k6 O* i* K% a" J3 q7 d* Udebug($query);# n$ G7 U; A$ u0 V9 P

) @) X0 H3 W# d" ?- J3 S/ F8 q: d) x删除
7 [9 C( R$ T3 @" m: I. KDB::query("delete from %t where id = %id",array(
5 p9 \% |! ]# M: t: J'test_db',11
: ~0 W7 {7 `2 _" {4 A: R));
7 \& ]* E; u8 @' O/ D9 V% ^5 h: r6 V; a% h* X/ y; S! d

4 E, Y0 P* t* J1 j+ B资源集转换结果集; e% R7 Y3 @, b0 z1 N
方法:
5 f4 Y( m1 Y2 W/ hDB::fetch()
0 u; o- q; [, u$ e参数:7 c! w6 w. ?2 d
$resourceid:数据库查询的query资源- B- f" v" I' g! S! h) ^1 T: U3 N
$type:数组类型4 L' V, x. Q( ~; H9 [6 V
实例:9 h2 u, a% r$ S& A
查询
% d/ V" \' A. S* Z% J+ u$query = DB::query("select * from %t where id IN (%n)",array(( z% x+ u7 r6 t: u, T% l5 `8 C- T+ _
'test_db',array(1,2,3)
, L* F0 W0 S0 Z- e: U: b5 O/ _; I));# c' V( s5 }: i
while($res = DB::fetch($query)){" U" K- m) t: Y. S$ I3 t
   $result[] = $res;
: q% E: o/ \, J8 S( p}9 c8 X- k- n6 v/ I$ c5 |
debug($query);$ h& i( r; U1 @& V9 v% s
7 h1 _/ O) [2 ~3 \3 ?
单字段资源集转换结果集(一般用于查看获取统计值)
* ]! B  K* N- H: U$ g% B; p方法:
$ `# I6 D! m  {' N7 h" |DB::result()8 o  @" Z) A. ], M- ]; b
参数:
+ v. n& ^4 a) q& z, L( M$resourceid:数据库查询的query资源  g$ M2 W' V  Z0 J. z3 ]
$row:指定行的第一个字段: Y5 ]; I3 O8 R4 j3 j/ Z
实例:# |9 j2 S; ]+ i3 O$ g/ C* Y
$query =  DB::query("select count(*) from %t where id < %id order by id",array() }$ r, B& ]/ Y
'test_db',101 {/ J+ c3 j# C; p* z$ u
));
* G4 P0 D  e1 g9 f6 `5 n$data = DB::result($query,1);
0 v4 X* J7 J7 l, M3 m
, K0 f# x; F! a& v+ f; R$ X0 H: _/ x常用实例:' ^& B6 r/ \. D( d6 u# e3 b
$query = DB::query("select count(*) from %t where id > %d",array(
; r" o: E4 D$ y' l# ~'test_db',7
  s' Q9 b2 A: M# H6 ?/ h));
  s  C  {8 h  d2 b5 @2 }6 n$data = DB::result($query,0);
& G1 w. V4 W/ e, ]+ S2 \- V& I; Recho $data;
1 n  @& H/ I; u
! [3 f. M% p! X3 H! K. k资源集行数计算(不适合统计太多的资源,速度慢)9 g1 r5 M; I+ R& Y! A
方法:
& @. @  {5 D% N6 y' ^' NDB::num_rows()
4 }/ h8 h! T- |7 B. {参数:
( A2 m* S5 _$ s+ w  n7 l$resourceid:数据库查询的query资源
( ]0 `% @0 o: j  j% F& J* i实例:1 h$ d4 z. v! `1 s+ S7 e# E4 x
$query = DB::query("select * from %t where id > %d",array(
; a8 e- r$ X3 U6 t% A'test_db',7
. G, [* I  e2 _7 J! R% m; U7 _));
4 `# M& y- L; ]! U3 [, T* C  G: T$data = DB::num_rows($query);# N+ s8 d0 z' f* Z) w5 u3 ^
echo $data;4 F1 Y# n& B6 Z$ O
! \3 h2 Z( f; n* h
资源集资源释放
* Q$ X, W7 c. i7 ?. F( ~方法:
/ G: A& J: u  i' N. i0 uDB::free_result(), |! h+ W5 T+ V3 K3 B: G) O% F
参数:- \4 y: O+ ?  u8 a% ]& j
$query:执行SQL语句的query资源( ~' K- E& j6 y7 w
$query = DB::query("select count(*) from %t where id > %d",array(% ?7 D0 N3 K8 K  H) Z( R0 f8 m8 P
'test_db',7/ N: G) a2 I4 N/ O7 L+ ?
));
. I; H0 j. G4 `6 k, c$data = DB::result($query,0);
# X" Y9 I' [& rDB::free_result($query);, a7 D0 |* }8 P1 a1 B
echo $data;. J1 x+ T6 Z  Q2 M
. n7 c( y3 h# y( N5 t
按字段排序6 t* n- c8 E  _  j6 k6 g% P( L$ z% y9 ~) R
方法:
  ]& e2 H* n: j* `& _+ UDB:rder()
# S7 x8 w+ D4 h( v& s% u参数:
7 Y7 V7 p; Y* o/ H7 P0 {# m/ W$field:需要排序的字段
) p8 a8 \& P4 l& S: A$order:排序方式
$ g1 w' ~$ p! ]3 e( d, w实例:
  F7 E% f1 a5 B! k1 V$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(
, n" F8 T! K5 \9 s3 I'test_db',76 t( G3 d: d3 t/ s3 ?1 \7 N
));
$ }- c+ K. u0 J4 h$data = DB::result($query,0);, w6 I7 C9 t( O/ N5 ]% j
DB::free_result($query);
3 }, c  m& W- ~3 N5 aecho $data;
6 N2 D( r( f) z1 c7 @  I+ A" H! _$ H7 |9 j6 v' F) P
取值区间设定" _0 w0 `- ~- K4 Q; o4 H
方法:5 ~8 l/ b5 b& S5 G# v( t8 k
DB::query()
% T1 f( V4 f) E- Q# C! h8 u参数:0 _4 l. F, D/ d4 |% l4 P3 s
$start:开始的索引值
9 p' [' j+ [7 i2 C1 ?, |/ f. S$limit:条目数
2 P. T; X/ o  M( s$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(
" A# q- \% z7 P'test_db',7
' @/ s/ }$ B! ]6 i8 Y));
. ~( V( e+ a. `- z4 u# F, R' T/ X: l6 D2 u
字段拼接
5 A1 Z8 b( J  ?方法:
# z4 ~  \7 V8 l3 t0 d* D# w1 QDB::implode()3 I" G, K5 r: P% n, l
参数:
$ f! d- F* O* W! Q" L" S1 V$array:需要拼接的字段数组) N) P+ E, q$ b. d4 o( j, D1 U$ r
$glue:字段拼接的字符串
: T5 _( s+ w; c实例:$ a3 K- G0 g' \7 n4 t3 j
echo DB::implode(array('id' => 10,'name' => 'ddd'),'and');! r9 g3 m7 D. Z7 R; i
& N" w6 m" ^) i1 t6 P
应用:
$ K  W, {( E4 [# c& u6 fDB::query("update %t set".DB::implode(array(* g" a# K# H/ P1 w' q- i
'name' => 'ddd',$ g8 K( d: ~. h
'id' => 22# a$ a. v  j5 z" w+ K) Q+ e5 |
)).'where id=%d',array(& ^6 ^# h5 }7 p1 Y( Q9 ~
'test_db',2 M0 O9 s2 z& k3 F. u. X6 a# k
10,% B' f- d8 B6 ]3 b" G. |
)
1 n* u5 Q+ C5 K);5 b1 _* Q/ p, V3 r: k8 R: Z/ Q
/ L9 w  n8 S' N3 b
字段数据设定
+ T" }2 n6 ~! _; R方法:
' O1 W  w8 L1 S* m: J& RDB::field()
. Q' e2 z# b! p6 ?. p2 W参数:( h3 I5 N' p: p
$field:需要排序的字段
. P3 f( f! }% \$val:字段对应的值3 J7 V+ T( ]5 q, K* ]
$glue:连接字段与值的类型
, H' h( S6 R5 G4 B8 h实例:# h5 v& B0 d. d0 G/ C- X
DB::field('id', 99, '=');
3 b. T3 ~: M  o; i* S
/ T. o: h# C: I# m( h3 I应用(把3改成99):9 q* s7 G, j0 |
DB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array(% q* {9 p5 P9 b# r5 }
array('test_db', 3);
5 l( x9 \1 U  q));
. ~; i' R( T& h: A
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
江山狂念 发表于 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 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

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