坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

[复制链接]
坏蛋网络官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:
$ M- T& ^; J" u: c) W6 v0 s方法:
: R; g6 n- a+ q3 z1 k8 ?DB::insert()
: E7 C/ E- B; E( [; [8 L参数:
1 |" v  h3 N5 Y: b  h8 T$table:插入数据的表- v+ O3 z" a3 z/ i& l- T5 s
$data:插入的数据,字段对应值
, n. N8 _. Z# w7 v& x, V+ c9 l. [9 v  B$return_insert_id:是否返回插入数据的ID
$ u( I. x0 `0 E, S& y7 E/ J+ @3 _$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)
; W9 S, @0 A$ m$ s0 t$silent:操作失败是否不提示
+ K9 R; ?3 p% l; F( l
7 h6 |2 |: I' I- B3 G实例
2 Q4 S6 T9 r( l# kDB::insert('test_db',array(. g% n6 |% ^- X7 E% f4 W
'name' => 'ppc',3 b7 W% b$ z" n9 c# E
),true,true);3 {9 x/ C/ w) W9 h( P; Q8 Z8 G' y

1 b8 s4 p4 H* Z3 C' z数据表删除:
0 y3 ^4 u$ g  M0 ~. S7 O8 ?方法:
' t! M% n' s& MDB::delete()
& W/ m) ~& @( j2 w1 D. @参数:& X2 P5 Q3 T, ^* |7 T/ |* k8 D: w2 y
$table:删除数据的表& w9 E- @6 C! u& n' G- R
$condition:删除的条件* a' q+ L- h/ s5 Q) M
$limit:删除满足条件的条目数
" N; q, v2 t) s$ t, q4 Y5 u% K& N$unbufered:是否使用无缓存查询
: Y$ S+ X/ X4 R7 c) [: r3 c. w
3 k7 y+ L# ?/ d实例:
4 }1 J9 _2 j% d7 D2 J6 ^! r' cDB::delete('test_db','id>2',1,true);m. g9 k9 m. a& c) W9 R- Q" h3 \
. l2 m5 }  ^% p8 o2 w8 B- r* g
数据表更新:
( W! Q2 M& ], R8 a' m7 i方法:& g+ A0 W3 I+ D9 m; T" s6 e
DB::update()
& V; e% |* a% v  N: h参数:; O- ~" s; f! ?2 z' e* N9 J# [9 r
$table:更新数据的表
  U5 l- B8 @% j+ y. G$data:更新的数据,字段对应值
5 a3 z. U, u% P+ K5 {  c$condition:更新的条件; e* l4 @! v+ V. b# B8 N
$unbufered:是否使用无缓存查询
+ Q8 k1 c  p  q$ S$ `6 g2 [$low_priority:是否采用无锁表更新5 j6 }6 G" M- h5 a

3 ^9 ?9 ^5 H  `7 t! O1 @数据表查询(单条):
" i1 d0 I4 ^" q( g# i; D方法:
8 z$ e1 J1 L$ y& \; b0 {9 G& RDB::fetch_first()7 c0 a2 a" c" `# S% Y& x/ [
参数:8 t% [! T1 i7 t( P: p) X
$sql:查询数据的SQL语句4 @& s* L' W' f7 T+ ^1 \- }
$arg:绑定查询的参数
# x' Y5 P; L& I+ ]8 A$silent:查询失败是否不提示: q( Z* g! S2 v. {( I& O1 r
实例:4 x2 ]$ s2 N& ]5 c4 r' a
$id = $_GET['id'];5 C9 g* Z; P$ O9 @' u4 X1 c
DB::fetch_first('select * from %t where id=%d',array(
* f  I$ e& i/ Q/ v'test_db',$id1 [; t) N/ E+ v1 n9 ?
));* J3 h1 l+ ]2 ]4 f# B$ S) A- z
$ s, z9 g" N" F+ k' t6 D7 H; W
DB::fetch_first('select * from %t where name=%s',array(
9 ]9 p+ R* M- p) x* N# s'test_db','ccc'
8 C7 ?. h' [& {));& F( {* O$ i' N0 x2 n
: L( Y. b6 x: s( A7 c: M
; K4 Q) K3 r* H# j3 R: Q. m

: `# Z1 @0 i; K1 r数据表查询(多条):; V, t8 u! C' g. @9 f
方法:# O* W' A7 z, q9 t( B- Y
DB::fetch_all()7 ?  P) v3 J, ~& f( L5 p. v. D; z% Z
参数:$ q$ b  @  [* l6 H. ]1 a  L9 h5 v+ p! G
$sql:查询数据的SQL语句" u, V" n4 i) v6 ?3 `6 Z% K
$arg:绑定查询的参数' b1 x7 C$ F# Z% v0 ^) v- J
$keyfield:一维索引的字段名称
& U* x+ n. x# b* v' L8 C$silent:查询失败是否不提示
: N' U/ m+ J, W0 X实例:
( C% x$ q. K4 t* ~! P# w4 a1 ?, m1 @DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(
+ H! _4 W9 c, k5 p+ D'test_db',7,10- W/ B$ w" r, @1 ~
));
/ Y7 t# h, u2 x& n. v% l% y! Z) n& I$ d. {! J" {% g! z
DB::fetch_all('select * from %t where id IN (%n)',array(
& {4 p) }) B& N( _3 V'test_db',array(1,2,3,4,5)
% [5 t3 z# V4 ?) m2 K));5 v3 K5 w) u6 d9 z9 \, s
" w. o, B& R: N, }
数据表查询(单字段) 常用于统计查询:  O+ C1 j# l5 Z) L4 p6 ]
方法:
7 n8 E) O8 b, r9 C, BDB::result_first()
6 x% P* ]+ v/ q! o8 [  ~参数:5 N/ B! R0 T8 _
$sql:查询数据的SQL语句
# S7 e5 P. @1 J' k+ i* Y$arg:绑定查询的参数
# X. n) K  y( U$ D/ G( J5 {8 O$silent:查询失败是否不提示
4 c9 N/ O' j, V) k6 y) _5 K4 d实例:
9 ]  w! Y; a- ?" \8 g2 ?DB::result_first('select name from %t where id=%d',array(2 J/ m# y' |/ u! ^" g7 v
'test_db',1
- f2 d8 @( b" h2 e));
4 h3 {/ N) N, J  C( M3 h7 l
9 v  W/ r; i& o4 N/ H/ ]DB::result_first('select max(id) from %t',array(
: O( Z5 `! {3 p% A' T( R# W'test_db'  b& B9 D+ U" t+ V& R
));
: n5 j( I$ H$ H
* c% z9 [3 s# Z6 D数据库自定义query7 W6 G; F4 c  l( B
方法:
. X8 z8 J( L3 }4 s) n2 ~! R5 a2 EDB::query()4 J9 z% J( P8 J0 L
参数:& c+ B7 z! [2 l' g5 Y9 t
$sql:自定义SQL语句; T5 m" o1 k/ D( W
$arg:需要绑定的数据
1 y. q/ j; N( ~5 e( }2 a$silent:执行SQL失败时,是否不提示
2 _, j9 S% d9 m! e  K, r$unbufered:是否使用无缓存查询
3 @0 N3 u3 {- s7 p1 P实例:1 O$ ]+ ^# q3 U( ~7 L6 |' m
$query = DB::query("select * from %t where id IN (%n)",array() P3 ?( z/ z. o
'test_db',array(1,2,3)
  ~0 Z, e' _! r0 M  N9 L$ o));
; _& L' c3 ^/ N. A9 I6 odebug($query);
- n0 I" G1 Y- _+ m& C- _- O$ W4 G  w4 R
删除
8 f3 A! f0 M) ?; b8 {2 l8 aDB::query("delete from %t where id = %id",array(3 Y/ J- A; [4 V% M, Z
'test_db',11% d& [% Q# y# r' s4 d$ L- P
));
, v1 }0 R, ?9 {# n; H
' ^1 o/ `0 o$ ^- C! Q
; m4 S; {: E5 [' T$ p' G资源集转换结果集4 u# V4 c1 G7 z1 _( t9 u$ U
方法:4 k1 }. a2 \* s8 i$ k1 I, Q3 U
DB::fetch()
' F$ F  W2 ?( k0 R2 w参数:
. H  @5 W) G0 _/ z$resourceid:数据库查询的query资源
% n# Y% l6 v" w" ]8 F( c$type:数组类型
4 b# T" [1 Q4 b# ^4 i& h7 H; q5 K实例:1 b4 B: ~- Z- `* s* S
查询/ x  m9 R3 o" v) t1 D
$query = DB::query("select * from %t where id IN (%n)",array(: O/ b3 Z( K: |" \6 e4 r
'test_db',array(1,2,3)0 r- Z1 C- V& K4 w' T+ W: U
));1 g% e; T8 X/ [, E- {6 L
while($res = DB::fetch($query)){7 e  i; `9 ?- B, r
   $result[] = $res;
9 P( h; m- i6 D- o/ |# \. C/ k- q" e}+ o, @: q4 ]" _  R; i2 ~
debug($query);
! ~! k' u" s6 g) z, |  n' B7 Y! |/ ]% i% R' e$ \
单字段资源集转换结果集(一般用于查看获取统计值). |; C: G6 q, B2 N
方法:& A: F) ]9 f" d  ^3 w
DB::result()
1 R3 v) ~" [1 C  i6 q* }8 W参数:
% B% W) c. G; u4 X$resourceid:数据库查询的query资源
. H% ~* H8 a6 V+ n" C$row:指定行的第一个字段
  ?; I8 K( {4 {; d实例:- [  a0 y* u5 v% f& f5 P0 U
$query =  DB::query("select count(*) from %t where id < %id order by id",array(8 y6 z7 V1 e9 U8 z; t3 m" c
'test_db',10+ K( Q) ^! ]& _+ ]4 n: d
));
) G% z' z) A4 v. Y! ~$data = DB::result($query,1);4 D8 ~- E; e- O, G
  Q, I  o2 t$ {8 ?% I, W
常用实例:
5 T% w- C+ N$ }' F$query = DB::query("select count(*) from %t where id > %d",array(
! S; N4 c6 O# p1 C. c/ N7 n'test_db',76 Z4 x) R1 ?; m
));
+ x8 ?# v2 ]6 B" h. P$data = DB::result($query,0);" Q; ]" V* s3 r" r
echo $data;! B& v! u/ U/ @- s- ~

; w! ^3 W1 I7 z( s  X' y1 i资源集行数计算(不适合统计太多的资源,速度慢)
4 L6 D; B: A5 e0 u方法:, u/ Y. S0 X& r7 g9 t* @0 Q
DB::num_rows()
. T( F7 u. S* y' Z8 y参数:
% m3 l0 N! W' S& b$resourceid:数据库查询的query资源# O6 A- O: m$ M% ?6 \
实例:
% Y0 ]7 v  ~. c# g: F9 i! k7 a$query = DB::query("select * from %t where id > %d",array(
+ P* S7 }. p6 I0 T'test_db',74 q' {1 c2 s7 k' S$ T
));
3 H& n# G1 R; S1 X& N. b$data = DB::num_rows($query);
7 }6 k  y0 N6 Q3 oecho $data;
. p5 x9 C" g$ T; ?2 [* |& w" V! m' t5 k+ ~- F% w/ M- f% o, K7 P
资源集资源释放) q' R2 Q+ N+ h; F( _" {
方法:/ @: V& j$ b( Z0 S: t0 k; ]# e; f
DB::free_result()
- C' s7 X. \' O/ ~+ e. r; v参数:. K" O; W9 C& g2 `5 u6 d
$query:执行SQL语句的query资源' u  D! M  a' G. b7 P
$query = DB::query("select count(*) from %t where id > %d",array(
" b3 l5 T( m; r: P! g4 n; h'test_db',7
( ?6 T, E% F5 [/ I4 `2 L));
8 B, b+ N) a, r4 v7 q$ `$data = DB::result($query,0);' ?4 v9 D  V1 k3 Z& x* }
DB::free_result($query);
# u, M. {6 }% }& u7 E9 Decho $data;
- ]7 @, G2 @" x- Z1 k2 e
* o7 ^" x3 L; t7 m& K1 Z) e* O, e按字段排序
1 r. x; w* Z/ E9 D6 H* z/ B+ X( Q方法:8 B; B! |" C7 F4 h. p, U' `" E
DB:rder()
7 Y# A' E2 G. @参数:/ W+ X  s) i$ x  f3 ]
$field:需要排序的字段; j* g% Q$ X& }! l6 l9 a
$order:排序方式
* Q1 j; |8 Z" g: ^3 r7 m7 {- s$ s实例:
6 J8 ^3 |' m7 E$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(- n& c0 t- T' k0 ]0 u" G  T
'test_db',74 z; L8 P6 h2 x+ Y, V: G8 t: x
));
9 M" R3 F  |' d$ i/ O4 u& U6 K$data = DB::result($query,0);) F% |7 ]' P! j. C* p& ~- }( o
DB::free_result($query);: Z* L* k" u( }' j
echo $data;
9 |8 w) W: n0 W/ d* t# ?- q& g$ C
+ k* A/ d' ?. K- t. g, W$ q取值区间设定- V9 ~9 E# t4 e
方法:
" b6 Y6 n; j( }DB::query()
) ~6 k8 x5 Z6 }! w2 s参数:
* s6 \6 T! x  z* k9 W7 [$start:开始的索引值
3 _+ ~; s' B  p, o) w' }+ Y6 A  x$limit:条目数( ?& r" Z* Y! j  W3 z
$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(
1 ]) P( {9 u  [+ K  P: {* m'test_db',7
. K" @5 l  e) b6 ~% W));
+ y/ M; U( w/ Y% T( ^1 `, x
, Y5 ^3 F  U5 }) k/ L) M- ]字段拼接
- v8 G( p$ B8 a* q" _9 q方法:( g8 g# H, B+ ^4 i% x0 ^; q
DB::implode()$ h1 y8 N+ \: g- a
参数:% }4 E+ D4 u7 M4 e. G: ~
$array:需要拼接的字段数组' n. \# v% d) i$ Q1 ^
$glue:字段拼接的字符串" @# I7 W  F- {. h
实例:4 ?' Q2 m* M# r8 A: h% P
echo DB::implode(array('id' => 10,'name' => 'ddd'),'and');
+ w. E! W1 P5 L. \. r7 e6 V. c3 z+ E) z3 R2 N5 h
应用:
7 R3 z3 W3 Z$ Y5 JDB::query("update %t set".DB::implode(array(
+ Y# g7 l. M4 N* l, y- ~2 N! X'name' => 'ddd',
8 S' O( a4 m7 N. Z5 ]; V0 M9 p'id' => 220 S4 Y& X9 g3 a" C  ]% I
)).'where id=%d',array(2 u( o6 d" I8 U; a1 U  R; q
'test_db',9 R1 Z- r; s% b+ c! H, ~
10,
' f# @) e+ U. R* F8 ]+ g)) M# t. Z  j' b1 o6 C9 b5 F# l7 X
);
* q2 k$ }8 X8 R9 ?( N  J) ]& m; L. u9 K1 @3 N) T1 l5 s
字段数据设定8 }1 v# y, d. L
方法:
# i3 g5 b2 f4 g# b  ^& V5 WDB::field()
) A8 X' E: b4 E4 \# `2 C0 M参数:4 d) K/ q; ~+ m; g7 j: H8 i- ^
$field:需要排序的字段
5 q, d8 [, C4 y3 u; e$val:字段对应的值
! `; j/ t% Z6 k) z2 O; Z$glue:连接字段与值的类型
3 l, f  u# J4 m$ j0 @1 F6 s; n实例:
& B) O* o* X9 w" D2 Z4 R" b0 c) ADB::field('id', 99, '=');8 }+ b- e# @) P! K9 R

  n% t7 v) H, g' B1 g7 Y6 \; \应用(把3改成99):5 z" w/ B" e8 `
DB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array(
# J4 b8 {+ Q6 Varray('test_db', 3);
9 Z8 S0 O3 w" o" W));; m5 z, D. ^+ I  r- V$ |6 W% o% m, 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 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

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