罗码网络discuz插件模板教程微信小程序安卓电脑软件htmlphp源码下载

罗码gitluo

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索
开启左侧

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

[复制链接]
罗码男神 实名认证 官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:* p4 M& w7 k# H9 X1 @7 g/ U7 r
方法:- Y- \* E2 q# P0 y
DB::insert()6 h, g( j+ l" h# t( x' ]1 G
参数:
$ y3 t! ^% `6 M/ Y; S/ B2 D$table:插入数据的表5 G, H" j% ?% t8 i& p$ s" K7 i
$data:插入的数据,字段对应值8 ~( f% A" r* G: y
$return_insert_id:是否返回插入数据的ID& p& v+ N0 v$ o2 R* {
$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)
5 M4 E+ b, X! A) v7 }$silent:操作失败是否不提示+ r# _" P/ Q0 l( _* Z3 V

& S5 K: |; B5 Z1 n3 m# R实例
; K, s, Z* c% GDB::insert('test_db',array(6 h* t8 K" u' l' t) e# Y' u6 U
'name' => 'ppc',2 j1 h1 ^7 O  c
),true,true);% v9 L( ^0 Y. b" _  Q3 s8 q/ F9 ?
3 z% Q7 J: y) X' `+ n3 l3 B1 E
数据表删除:
+ L7 \9 p) V1 x: _, V方法:  |0 H2 z; W8 c1 ^8 |
DB::delete()
9 J  J; ?* m, @4 v5 e/ M: i- O& L参数:
9 p" M1 X0 T. y$ A$ G$table:删除数据的表1 V/ }7 P9 g* O0 w; w/ i$ U* L; z
$condition:删除的条件
: h: q; N# \! ]9 h) s$limit:删除满足条件的条目数
; W; G) O0 H( Q% Q$unbufered:是否使用无缓存查询0 J. Z* X7 _% ^- c: Z: T% b
8 i% p( h* ?1 `
实例:9 h1 O! w/ r, |; n8 M% ]) i0 v
DB::delete('test_db','id>2',1,true);m" d! D7 U% G' h
! Q$ d) U! K4 |  {1 U& n
数据表更新:
  F/ N6 F6 ~" m9 v  @: x" p方法:
' B7 Q7 Q6 E9 Y3 r, X- WDB::update()& N! E  Z6 B+ ~1 d' w
参数:
- D+ y* P" {; P6 \7 E4 L; H$table:更新数据的表
. |- m, e% H. W4 @$ u$data:更新的数据,字段对应值$ G% J, [, V4 ^6 |; B2 w
$condition:更新的条件
  C) L' F( M& o) t) x$unbufered:是否使用无缓存查询+ e1 S3 W& v% b* h1 g/ S
$low_priority:是否采用无锁表更新
- ^& k! |: T/ s1 b
) T- ^1 @$ E8 s& n$ A! P数据表查询(单条):  q+ V5 p. _3 z$ q+ T* t
方法:
" ]- `/ v, i# v0 ?. ODB::fetch_first()
3 s0 k0 X+ P8 |  x. f参数:
, y& }0 W: l- l+ t" K$sql:查询数据的SQL语句2 W0 ^5 Z* _9 Y1 c; c) E
$arg:绑定查询的参数: ^" X! u- \( g- f4 B8 K
$silent:查询失败是否不提示, Y7 V$ u4 d# W/ }, y- |6 Y
实例:
: h! D+ P; G* b& @. Q* G$id = $_GET['id'];' S: X3 [! }% H% V
DB::fetch_first('select * from %t where id=%d',array(+ n: @/ a& j* D% v( Z3 v
'test_db',$id) w0 ^0 p7 P* N$ g- q
));* m) V0 z6 b  _' I3 C, ]6 n

9 M5 ?, c9 B9 u) ]DB::fetch_first('select * from %t where name=%s',array(% A, O% ^0 Z( B( r& O* I7 ^
'test_db','ccc'
. [! G- w* A/ ~, E));
! d, Z* `! Q) `1 M0 f: y3 P2 o$ q6 W$ ~

# C9 [# c# f4 i- j- J6 F* ^% x9 s* G, P$ n- m7 e+ z. L
数据表查询(多条):
3 x' P, \+ g# q  T0 G. N* _8 b方法:
' f' m5 d! f  ], V4 TDB::fetch_all()9 [) l6 ]( c# E$ t! M$ m4 A: W6 \
参数:
% {9 M( a$ S' p% k7 H& F( K, P$sql:查询数据的SQL语句2 R0 m7 c7 l( L& y+ ]( X
$arg:绑定查询的参数, O- W2 K0 U. {, w, |
$keyfield:一维索引的字段名称
8 `* J2 L( ^/ H% V3 g' E/ F' T$silent:查询失败是否不提示
  w( B' m2 P6 {( D; t实例:7 l/ U1 ^7 m- w
DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(. j9 R# z, V: i+ }9 D1 d
'test_db',7,10( n! s1 B9 m; D$ @0 o) Q1 u2 b" g
));* g  e0 q6 Q+ `8 s  y5 z! y

5 Z6 _" Z: V. b9 {DB::fetch_all('select * from %t where id IN (%n)',array(! q6 T1 ~# b7 a' V7 n& X0 w
'test_db',array(1,2,3,4,5)/ r3 B' l' o( Z4 z! I3 J, k" c
));
) \4 X. _' q/ j
9 k5 Y% T/ Z$ I  c; l  E. p. V$ X数据表查询(单字段) 常用于统计查询:9 a# {, n- K8 D( ]5 A
方法:) J; k% X% n- w* }# {* b3 t
DB::result_first()# q+ N6 L- |# ^( y8 V
参数:
( S% l5 n4 [* D& I5 @+ {$sql:查询数据的SQL语句2 j5 Q0 ^- L% K6 }5 }* ~
$arg:绑定查询的参数
4 o, H* T) \4 `# C$silent:查询失败是否不提示
( W+ z4 d# s$ f4 f- q$ i* @( J1 v实例:" Q( k2 r+ |, y9 s. Y$ c( r
DB::result_first('select name from %t where id=%d',array(% R2 k( r. n$ J3 D; w" m  S
'test_db',1  c$ {% d! m* `! s: E5 p0 q
));
8 z6 i1 j; _9 m# o# R" p
+ N+ m$ I5 z* j5 f4 oDB::result_first('select max(id) from %t',array(
7 [. N8 b, V  x1 K9 J'test_db'. x# h$ C1 V" i6 t* X
));. w3 F- q4 H$ E+ Y% C5 Q
  z5 Q  S) @6 Y9 d
数据库自定义query& f3 k" g! i% H, [
方法:
6 R' Q8 |# i0 }: N6 NDB::query(): P) M' e# R  U+ c9 m; z; s& S
参数:* [3 a$ Y. D9 P) |4 |
$sql:自定义SQL语句! Q9 r. Q# Y- N+ s4 x* o
$arg:需要绑定的数据
" [" A! S* |- y$silent:执行SQL失败时,是否不提示
8 Z  [: |7 }3 r# K0 l: m$unbufered:是否使用无缓存查询) _* x' ^7 O% A- i
实例:
0 e: m" a9 R/ ~  }# a" x$query = DB::query("select * from %t where id IN (%n)",array(
( e/ Y4 |8 m2 j( t( N'test_db',array(1,2,3)
4 _9 L2 |+ y% ^# }" _));0 ^3 n6 N. v" p( \) o
debug($query);  J1 W( O/ Y" {3 h& `) W2 w
) o6 k0 _! Y, J6 w; t- N
删除
& [5 @. a3 c* c" j1 `- J; D1 }DB::query("delete from %t where id = %id",array(
: p. y- W) \, Z  c  d'test_db',11
4 c% ^, H. j8 b- K));
9 w% l. F4 G$ Z# D: j
8 O  s3 S- s- y7 n( U. v9 M1 F$ g' h
资源集转换结果集0 w* L9 l, Q, N/ C' G
方法:$ O2 L: x. G: Q6 `
DB::fetch()
" U  d8 f! a2 b3 J3 R参数:% ]0 z+ }9 k, }- z) g3 A
$resourceid:数据库查询的query资源
0 S0 m2 X0 G5 M9 R2 `+ Z$type:数组类型
* I3 W2 L! L* |! O实例:* M% O% F7 u) l$ H, [7 V
查询; u6 M' ?" C- F& Z/ E/ F. _
$query = DB::query("select * from %t where id IN (%n)",array(( z% b9 i& _: L) M) R/ O2 E" u
'test_db',array(1,2,3)
  o$ U" J; L  p) B' ]) Q" w));
# Z/ w) B8 K$ ~4 v/ R- mwhile($res = DB::fetch($query)){
* ]5 j' a* [9 [4 W7 o0 h; T   $result[] = $res;
- f* x: w4 u  L3 V& @}3 J5 l" D/ @' {1 \/ F5 ]* M
debug($query);% X% e# m- j3 i$ C
/ T$ @# R" F* g- Z. j1 [
单字段资源集转换结果集(一般用于查看获取统计值)
0 Q* j& L# M7 J5 k方法:
0 {  B6 p2 i; j3 zDB::result()
4 _+ O  X: ~' i# l/ ^( X9 I参数:: ?# k' g4 Z8 T. R7 e) Q; P
$resourceid:数据库查询的query资源# M% ~, b  C+ w1 ^9 s* Z
$row:指定行的第一个字段4 |, G$ }( j4 l1 g5 g
实例:$ i1 ~% L; ?! u" H/ `
$query =  DB::query("select count(*) from %t where id < %id order by id",array(
2 p, z6 M9 s  ]5 `/ y& i'test_db',10
: j+ @" E( |" I/ g6 y));9 E( {: C' U2 B6 \& U
$data = DB::result($query,1);
7 n: I( C6 K! @3 }- z, v6 n8 k* [# v2 B! R
常用实例:' P% l1 {3 @$ P9 ?5 N; g" a
$query = DB::query("select count(*) from %t where id > %d",array(
; m: I& b, Z7 u'test_db',7
7 ^- d1 C# ?+ a: O7 R));
* A1 J' B6 e9 F& }/ j# `8 O$data = DB::result($query,0);
1 w2 I0 L+ c) mecho $data;
% J" E: u- J/ I3 W8 T1 s: b% [9 u! t" O/ y* E
资源集行数计算(不适合统计太多的资源,速度慢)" i6 N, N% M% s7 \5 T
方法:, I8 M! C6 @1 v% v' H6 G3 |2 [
DB::num_rows()" F/ F) K. {$ f( S: G/ g
参数:/ t0 ^* Q  \; p* M
$resourceid:数据库查询的query资源/ F. E6 X+ F& Q! V% P
实例:7 q+ C  Z1 @( q: C
$query = DB::query("select * from %t where id > %d",array(" J; d  I8 E! F2 I: ?
'test_db',7
# N" r5 l6 s7 Y+ f) J));
0 p) B  B4 e9 C6 R. a$data = DB::num_rows($query);% @' s" j7 i* l$ Y! t% D+ [4 j
echo $data;
0 |- p1 |2 z9 {* d% D0 s9 @/ \! Q: p9 k
资源集资源释放
- P8 H1 s. D9 N; m2 h方法:
; Y% k6 [  z  |$ wDB::free_result()
6 |; `, }/ A8 u  Y2 f5 K: x/ m- E参数:; y4 T/ |: q* v
$query:执行SQL语句的query资源* s9 O& z+ S5 _1 v
$query = DB::query("select count(*) from %t where id > %d",array(" w: `. y: h0 u& k2 q
'test_db',7& d( |! B8 Y$ Z7 R  j% T
));* A& l- G( D/ a7 }+ E9 A
$data = DB::result($query,0);. a; H: R+ E2 ]" L6 u1 |
DB::free_result($query);, s7 n1 H: M2 ^
echo $data;
0 m. B, y) B0 {: v2 d8 s7 y- A5 \# y9 n. l5 Q6 }% |% N
按字段排序8 i3 m+ n! x# A/ q1 n% W
方法:
& j. x. v  a: |( l" qDB:rder()1 E9 V4 ~8 u- q5 S! d
参数:
% G7 @9 I8 T" n/ j- @: ~% K, E$field:需要排序的字段2 y# w: g+ V+ k3 B
$order:排序方式
9 o" Q6 S& O- w3 J1 M, ]9 s. |6 g" ]实例:0 u+ w3 z7 Z. X2 _8 g9 N
$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(
8 J( S4 X5 @& _/ x'test_db',7
1 ]4 l5 }; Q4 D# J8 _/ S& d));6 }) R5 C* R3 r6 I" h4 m& g
$data = DB::result($query,0);
, |! V' [/ o& k  kDB::free_result($query);
9 H& [7 t; R; Y! j. S7 _6 _% Recho $data;
, D! \4 \# [! `
! q$ A% h2 J  G, P2 n3 a: U8 L0 [取值区间设定* V9 _2 W8 j/ Q; c& F
方法:
, I4 F1 n) m/ z) x3 c$ }DB::query()
% a4 s5 r. A- ^4 N$ O参数:- q+ z& @1 W  g8 J
$start:开始的索引值
& }5 t- P# `$ I) p8 X0 c$limit:条目数
5 l8 ^6 f% r( [$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(
/ V' \$ Q" N6 X1 F'test_db',72 \% H$ P: t7 D! m3 J
));
( t, M9 v& j+ l+ r! z! O! z3 M% H1 M) Y# w+ ?  M
字段拼接
1 @9 Q& n% C, X" I$ ~' J' X& N方法:5 i: n, `, v2 `
DB::implode()
) `$ K* h0 b0 t* Z  `8 ]参数:
0 b" U% z( Y* S* v$array:需要拼接的字段数组
/ P  a* ^; [) N$glue:字段拼接的字符串4 [7 D" t! ?6 I2 D
实例:
, K2 J6 D8 P) Pecho DB::implode(array('id' => 10,'name' => 'ddd'),'and');
: ^2 I/ d3 n- y; V0 r' a# `! w3 |( s# E0 L. i
应用:4 E. V4 a/ ~5 Y; O& K$ _6 [
DB::query("update %t set".DB::implode(array(
9 h2 L0 P2 o% m1 P  j' j( b'name' => 'ddd',
# O/ }, p0 o1 G+ u( L% S: c+ D'id' => 22
# A; |9 ^) b) K5 b8 k* @4 H  h% G)).'where id=%d',array(/ w4 z! l- F" a% M& Q5 I1 s
'test_db',
1 Q) {: y2 D! \" j5 @7 X10,
$ o0 e$ Q+ B7 m6 ?* k+ Z$ k)5 |; [: b" z4 j
);9 \# k, ?! c+ O, c6 \6 |" i$ n3 @% a
- }1 q0 N5 Y, H7 _
字段数据设定% v2 b1 t$ _& N) ?% q& \& o& T! E
方法:0 u! Y% S: \( m
DB::field()6 U) Q" d+ s8 [9 Q; B+ @
参数:
8 G6 |- C- Y5 [# w# P7 Y! q$field:需要排序的字段$ V" F6 i% \) |) L
$val:字段对应的值
! X# E. [. c3 @# \6 `& V* f1 w7 n$glue:连接字段与值的类型
+ G+ i# n4 G: z实例:
8 ~" e! `. l7 r/ b& G; ~3 mDB::field('id', 99, '=');0 B% N5 F; R$ D4 K* r( K* g4 x

# ~. ]# w( V5 L* F8 S  ^0 U应用(把3改成99):
+ H( S9 |" ~( C9 k1 u1 ODB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array(
2 V, j" v* }3 Y, U/ barray('test_db', 3);0 u" A7 v# M+ @6 y2 k! g( d
));; d8 ^% m# h) s& i+ i$ m$ g# 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 | 显示全部楼层
有竞争才有进步嘛

回复

使用道具 举报

 shu1332725 发表于 2020-1-22 15:30:59 | 显示全部楼层
写的真的很不错

回复

使用道具 举报

373044885 发表于 2020-1-23 04:40:42 | 显示全部楼层
我抢、我抢、我抢沙发~

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

QQ|Archiver|手机版|小黑屋|罗码 ( 粤ICP备17073043号 )https://beian.miit.gov.cn/#/home

GMT+8, 2025-11-24 15:40 , Processed in 0.127178 second(s), 57 queries .

Powered by 罗码网络! X3.4

© 2001-2017

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