坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

[复制链接]
坏蛋网络官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:
6 P9 n- |* u$ }# k% R& T  c; r方法:# o5 j9 b; K  J$ W. C" O  p; o
DB::insert()* S- C% r1 P- N- [! O7 H$ B
参数:; u7 \8 W7 I, u4 L/ o
$table:插入数据的表6 K  _0 s: c0 |% ~7 }9 g
$data:插入的数据,字段对应值& @  U  |/ f. y4 U/ z; V, Z* `2 I
$return_insert_id:是否返回插入数据的ID8 J, v& J- [1 `; o3 N
$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)' g6 m+ m: c1 B: |& d* @- N7 d
$silent:操作失败是否不提示
, p' k5 j7 q+ L8 f+ m6 A( |3 H  w  `& e6 Z9 X8 _
实例
8 J" T8 V" a3 e' m$ a* FDB::insert('test_db',array(, R3 H, Y( A9 W2 w. d0 h
'name' => 'ppc',: \! R. e( _$ k" d7 R; T
),true,true);
1 B5 v& P8 B$ N1 o! i9 b0 A
. Q4 r8 J4 Q- F' c# t数据表删除:7 _( ~  q5 m6 L4 L( u6 e
方法:" l) s. G! W+ @: B% `8 A9 J" a
DB::delete()
2 H- ^, K, G7 H, O/ Z参数:
5 W, f6 u; J3 S8 \; f6 q1 n$table:删除数据的表$ ?1 H! p4 B% s
$condition:删除的条件) \; W5 m) Z9 P6 c' ^
$limit:删除满足条件的条目数
& X2 G! Q& o: w2 V# P$unbufered:是否使用无缓存查询
! [+ ?4 z/ ~$ s# p% V; R' I
5 R+ _! u5 n& Z7 t4 U  |实例:
% ]% g  j, O) p  d& l4 m  fDB::delete('test_db','id>2',1,true);m
: e. j) {$ l/ D; v7 R( \0 i' V
: H* R. q' N! W4 c& ]% D% b数据表更新:/ c( x, o, `% t! Z1 O
方法:% d: k! M% L/ I1 K
DB::update(), b2 G! S5 t$ U: E4 `; ~: B) U
参数:
% {( f# U) S0 W$table:更新数据的表
, d  |; x8 U4 I: ^$data:更新的数据,字段对应值4 D8 r( o7 ~" J1 p: o5 ^  U
$condition:更新的条件
$ y1 h6 e+ F' {( F; c0 Z" w$unbufered:是否使用无缓存查询
2 i! K" R! a: [) V4 Y$low_priority:是否采用无锁表更新
) h$ V6 e. h3 ]: I" r
7 E* A" ^" e8 k- ]& h1 n/ \数据表查询(单条):# r5 J+ h/ h/ N6 `, k' z
方法:% Q; e# r. i& H& L& M7 j9 Z
DB::fetch_first()
8 N5 K) h3 D% P! u8 C参数:
& j' p& W5 @* _) h7 N( l5 @7 c$sql:查询数据的SQL语句% M) U; ^+ H8 \/ y- Z2 r1 V& D
$arg:绑定查询的参数
( g( w, U8 B: O0 U5 k# n; P$silent:查询失败是否不提示
" ?, N' @( g1 r实例:
) E" n6 {$ B" v' d. {9 v% C& @$id = $_GET['id'];( [, C6 B- V9 O
DB::fetch_first('select * from %t where id=%d',array(
- [( a: s7 j0 U0 A2 b- m4 o; g'test_db',$id
7 n% V; N$ {, r7 T+ E));' s& J4 V! ?0 O" M$ L$ y7 b
1 d" [) u% O% t- D
DB::fetch_first('select * from %t where name=%s',array(
% s: w% {0 i' l1 W( R'test_db','ccc'
! y( p% Y1 f  W& [. W));
) b: X: n8 g( ?% [+ l/ p$ W( i! H" F) M- X3 `1 T
9 w% X& O  C6 w: ~& y4 ^

1 U. H3 J  c  E  \数据表查询(多条):
0 N: ~; u2 s) s7 ?1 i方法:
8 l' w  s( w" k) v; S- |, g$ MDB::fetch_all()
" u" u" ]9 S3 f3 J  a2 G( o参数:
$ |) X: w5 F; ^  I2 p6 Q$sql:查询数据的SQL语句( R" A$ n$ _$ e+ M; s: e
$arg:绑定查询的参数# i& O: Y3 v1 j2 V, o2 U6 h( O
$keyfield:一维索引的字段名称  M: T( |6 j9 h+ N# k
$silent:查询失败是否不提示
& P3 y" E& A  [# I) [4 ~实例:
, ~6 X5 M1 l9 T. Z5 S2 jDB::fetch_all('select * from %t where id >= %d AND id<=%d',array(
3 y# E, G5 H9 w'test_db',7,10
- L) e& Q3 `4 x1 c2 D$ a));7 I1 ~: B$ {. ~$ }& ^

4 X0 O# {( L4 b, NDB::fetch_all('select * from %t where id IN (%n)',array(! v6 x8 R: ^; h# b
'test_db',array(1,2,3,4,5)" B$ a  X; P/ g, `6 G: y
));4 _/ o, u5 P; q8 m
9 p) R1 g0 h6 o) Q$ l7 Y
数据表查询(单字段) 常用于统计查询:: \" ?7 b* [3 A" S2 G
方法:
8 _" [6 a9 G" X% l  K/ aDB::result_first()
; [, a6 v0 L) k# C- B参数:
" V/ U) L0 {' S* @$sql:查询数据的SQL语句- p  B5 z  k) L6 X
$arg:绑定查询的参数
+ f8 v  z# v( [( k( E$silent:查询失败是否不提示
* m0 U2 w; W5 v6 E4 n实例:
  M7 q4 g+ J* w2 nDB::result_first('select name from %t where id=%d',array(
" H0 Z' J; O- z' S'test_db',15 A' C) {' ?& T2 j& }
));2 e0 x: x) s7 }# M7 @* b
+ Z5 `7 I* y0 A7 F8 I
DB::result_first('select max(id) from %t',array(8 l6 {! U2 A* C/ j
'test_db'9 |2 j3 K' D# J! V% V0 O3 X! [
));) W7 x6 }9 \) U
1 x6 N$ ^: W% v) N" Z/ O
数据库自定义query5 q5 p( W7 L( v' m
方法:
) B/ w) p4 W# q8 s/ c+ {# gDB::query()
; R. J6 V8 f1 p  |5 C  _参数:7 j' @  t: f% b- H0 }# {% g
$sql:自定义SQL语句
7 q/ B3 l) \1 T" \1 s7 A" p$arg:需要绑定的数据1 `1 D. y+ R- n* I' B
$silent:执行SQL失败时,是否不提示& L% B5 X/ ?" J6 @
$unbufered:是否使用无缓存查询
, D! l# e% c6 j- i6 Z实例:0 T' m* Q" h# h
$query = DB::query("select * from %t where id IN (%n)",array(  T4 L9 [/ N# ^5 u8 [
'test_db',array(1,2,3)
8 F# h: T1 J$ A8 i6 E$ @+ j" M));, D: k$ P8 U. B* u# s3 n" ^- z
debug($query);3 D4 y+ O/ j0 T4 X

  V6 m9 ]. a# p删除
& d8 `9 `8 f/ f/ O/ SDB::query("delete from %t where id = %id",array(: i, z" A& i; N% D
'test_db',11
' d  b( n, G" T0 I4 _6 C0 p, c));
- E. C: X' [; j7 w
5 e3 n7 c3 G" V$ N* E/ h2 f- W. k, L/ ^3 g
资源集转换结果集
2 }  d4 j3 a9 _) A/ c0 ?3 N$ ~方法:3 E& p1 j1 b# h- j: w
DB::fetch()' n# C9 w& d# H- e7 E! U
参数:
; v0 h( g) ^3 \; U" J$resourceid:数据库查询的query资源
+ a4 j2 n- n2 a8 n/ ?( n( s' {$type:数组类型) [0 Y; K; f# T4 [* Y9 j0 ~
实例:; q( f& j, T. @+ k2 g. C5 R4 Z; A
查询+ L$ e" O2 z4 `  M( ]# R; P
$query = DB::query("select * from %t where id IN (%n)",array(
/ J8 K2 c, q( R5 r$ S2 X) W5 W'test_db',array(1,2,3)) X* ^1 r3 V2 M# Q
));
6 w3 {. b4 A4 z3 l( iwhile($res = DB::fetch($query)){
% R) a4 C4 `- ?, [6 k4 v8 B   $result[] = $res;5 V5 H: P' a7 p' o2 n* x
}: c0 K3 R9 A+ p8 Q- L% y/ A: s
debug($query);
/ \, ^: f. }: w9 y
9 r. J! M1 Y0 [单字段资源集转换结果集(一般用于查看获取统计值)/ c& \7 v( ?( f$ E/ m: ?
方法:
8 G% w" k6 U  E% g2 L3 oDB::result()' O/ N% y5 a7 ^% w
参数:
9 T3 c3 t  J$ B  ^) w  v$resourceid:数据库查询的query资源
7 ]6 Z" u6 O. Z4 B" g$row:指定行的第一个字段
$ H2 ]1 ^' V) d0 H9 t) l& [实例:
3 k. o6 l3 M5 [$query =  DB::query("select count(*) from %t where id < %id order by id",array(
9 k, W5 c* G' V7 F& p'test_db',10' G3 w' I8 A+ y% r+ q- d
));$ D2 f5 D0 H6 o& R( f+ l
$data = DB::result($query,1);
5 G6 N, B/ @* T$ }1 O6 @- ^/ V, _
8 C" t; y- @+ s2 b2 c. i* R# N: _5 g常用实例:3 h/ r* Y. t0 E! E9 Z
$query = DB::query("select count(*) from %t where id > %d",array(
: z1 {) P0 F6 U% _, t6 N8 G  v, F+ k'test_db',7  i+ s' |. h1 r/ L* Y
));1 n8 D, t; w; ^, z) o
$data = DB::result($query,0);5 m% t3 t# I& G
echo $data;
8 e# s2 \& F6 ]2 U+ @( w3 y& }
# ]6 m; ]+ L" P; G, g资源集行数计算(不适合统计太多的资源,速度慢)/ D" ^& a5 J* M7 c" k2 J4 C
方法:
5 Y8 B( T; k* Y9 {& Y1 eDB::num_rows(): Q9 W# c6 I( y: E: g
参数:
) k# V  b/ P" y% P; q' [9 t' _+ `$resourceid:数据库查询的query资源
, Y1 e; r+ H% e+ c4 u) j实例:) l+ U8 Z7 c3 e, H' ]
$query = DB::query("select * from %t where id > %d",array(; \4 E/ j' Z$ c! S. N: @
'test_db',7% ]& O( o. H0 s
));
) }% p7 [2 c( k& Z3 |1 j; F$data = DB::num_rows($query);
7 ^, P: v4 i5 w7 P  A; a( R$ Gecho $data;
% q' R6 B1 u0 w2 m  R/ B
: |) G8 w5 N* O资源集资源释放
. _# X! y, s) @+ U, J% g方法:
  I; Z9 e3 m9 kDB::free_result()  S2 W8 k- t/ z. C2 o
参数:
! K  ~6 h! P; e# y4 ^" ]% a$query:执行SQL语句的query资源$ b* y$ Q- i$ M6 x, ~7 }/ E; c
$query = DB::query("select count(*) from %t where id > %d",array(
: C( t6 B3 a- ^6 j1 V0 ?'test_db',7
, l. D" N( l$ j6 k7 O8 Y0 X));
# a7 N- J, ^( O9 H. \4 @9 y% |$data = DB::result($query,0);( E$ J' H2 M/ I8 s: d5 e
DB::free_result($query);3 [# q6 g% J8 [9 Q" X6 x
echo $data;
' r' Y$ ~3 ^0 a4 P: F  @; u( B" n
$ I' y3 W# T" g  B0 e按字段排序
5 Q$ g+ `: z  @$ A3 I& k方法:2 F6 A/ Y# a9 `/ M( _, X9 g0 i
DB:rder()
+ _: f1 h: w2 q# o0 |9 A* o5 U( f" A参数:, `4 v* c4 t1 r6 P% A. x9 e
$field:需要排序的字段
% W) z) c, T  X0 j: Z8 |, z) g' C% J$order:排序方式4 L3 e: E) g% r) {: T
实例:6 A' A# i% f' z" G  V) ]6 u- E
$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(
5 W% B# M3 Y' E5 A/ F( y- j" ~0 F' d'test_db',7) ~$ D& P) u& y, M  B# j. K
));; {$ \8 l/ d$ d/ }5 G
$data = DB::result($query,0);
$ w* g; z* c) a, E5 C! tDB::free_result($query);, p8 C. j/ D, V5 V8 G
echo $data;0 \' u7 w6 h2 A" m$ J1 G

9 i3 |1 d, K  _$ ~' o; f4 ?取值区间设定, h0 |5 I. R, h% N' @: C7 J
方法:1 y8 s8 ]. B; F4 J% T4 `
DB::query()
7 h  @: p+ E! }- M参数:
+ K# J% D+ e  P0 ~9 R0 m$start:开始的索引值
8 x; J5 B5 S) Z$limit:条目数
, R# U) ?. |1 D$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(+ N; [& S  P& r; Q
'test_db',7
. z+ j8 _$ m3 a2 O- r));9 @  D! U( [) i- z/ u; h
$ T! j5 Z" d/ y" q  F( f# F! n
字段拼接
; {6 _/ N. y/ y: [5 }方法:
* o# X0 k: K5 U% U! {& {- s5 GDB::implode()$ |9 w& u; n; H! l
参数:
) x, c+ B; p* u% u! x) y$array:需要拼接的字段数组) P- A3 E( A* A. w' [! A- J- J
$glue:字段拼接的字符串
0 ]1 k2 x; C# S) ?% f, w# r实例:
$ i, i; |& w- ^8 Q' j& Yecho DB::implode(array('id' => 10,'name' => 'ddd'),'and');% }8 r6 \) w4 t5 q% w
# F* N, W) B- }) c& C
应用:' w: v- g  n4 \( Q: B2 P
DB::query("update %t set".DB::implode(array(
+ O. l8 v. K$ R/ V' X. ~'name' => 'ddd',, X) L) S! M) @) Y' F, l; i
'id' => 22
% o: ^9 G* X9 X, v( T- G)).'where id=%d',array(, R3 G! ?5 Y- h- Y: W
'test_db',
6 `- ]% b9 f+ b# j$ n) E% D10,
7 ]. c2 @; c& S0 R+ z)
& l- h5 M. W2 u& z1 @7 n  Z);  B% l4 {3 B9 B
2 @" m- E3 R$ |3 Y9 I
字段数据设定: E* [( ]! Z% e% k3 y: x
方法:7 s2 @9 k, U! A1 b- {& ^
DB::field()
2 P; K' j+ |* y4 B参数:' {' E# N* g+ f) [) D
$field:需要排序的字段: D. W! l: L  f0 U
$val:字段对应的值0 v% L1 _& O0 _+ o( c6 l
$glue:连接字段与值的类型* Q( x+ ]3 t: N* y. x. b3 ~
实例:
' M: o- \$ Y" h' DDB::field('id', 99, '=');& o' J6 s$ X' D: [- U( x' n
+ [" w$ @" f! _) p/ R
应用(把3改成99):, R' n1 w6 f1 t
DB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array($ Z4 H2 y1 H, ~& M2 y# K' E
array('test_db', 3);
6 L7 R( M1 {3 p/ |" d! f));2 ]9 H9 \3 m- J! U' R6 h/ r6 X9 ?
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
江山狂念 发表于 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 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

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