坏蛋网络

 找回密码
 立即注册

微信登录

只需一步,快速开始

手机动态码快速登录

手机号快速注册登录

搜索

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

[复制链接]
坏蛋网络官方 发表于 2020-1-20 03:02:09 来自手机 | 显示全部楼层 |阅读模式
数据表插入:
  Z$ B* g, j3 l) Q2 M方法:
! W8 I0 I  n" D4 |1 d; e2 l/ \4 eDB::insert()* L+ A' Y) c$ G. \
参数:
4 G! n5 z0 X" G$table:插入数据的表0 v' ]- b/ g1 a: P8 V& e+ ]
$data:插入的数据,字段对应值
( R9 y2 a0 B- t( M3 S; a% Z9 R4 \$return_insert_id:是否返回插入数据的ID
2 Y" j0 b, {2 s: [! `$ g$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)9 n' `1 ?4 X$ J
$silent:操作失败是否不提示
$ C6 G& c3 ]% P/ H1 L; x. v
; Y$ q7 Q8 B# [" u, G实例
! ?- y. b" C3 x+ |* @DB::insert('test_db',array(
% H. s1 c% g% I. ^0 K% z'name' => 'ppc',
5 W7 d) |% V% e( q3 H),true,true);
" A1 `3 |2 ~( j: V6 p! U1 F1 C
1 B( L& _5 `: e$ }6 |( |, m数据表删除:1 E# s$ x# X4 L/ A
方法:7 d: Z) k7 y; f  x  t& U2 R) s! M
DB::delete()% T# g6 G3 k4 j5 c9 M
参数:
9 h, {& R$ W2 T0 N/ F& T$table:删除数据的表5 _0 E# m1 U1 k- U; U
$condition:删除的条件: w6 o. k3 B' t& w
$limit:删除满足条件的条目数  N' S  i$ P* y- S. u7 `" ^, t, T
$unbufered:是否使用无缓存查询
. G% x. h+ ?0 Q& O! N0 Q' R
& j' w# k+ ]* J5 U+ L. E. K( z实例:
  K9 v  N! y, B# QDB::delete('test_db','id>2',1,true);m& Y$ U2 ?5 [! g- G5 Z8 I- W& w& k; U
  }& h  j9 W& v% L% r% C: P6 l( V
数据表更新:) e. b, S7 Q+ k& N5 F7 M
方法:2 X( U$ i+ J" @* K7 ^/ z
DB::update()) n4 C# {& e7 b0 X& c' B
参数:" W3 C# ~; X$ v4 n
$table:更新数据的表
% I+ x5 j! s  N9 Y+ v6 Z" i$data:更新的数据,字段对应值
( U8 X5 k0 U2 Z$condition:更新的条件) Z& c) r2 _" g6 [8 t
$unbufered:是否使用无缓存查询
: V! M- T/ {( K; D  n8 s$low_priority:是否采用无锁表更新
  e+ Z& y% i( V4 {9 E7 N! [/ ?/ q0 n/ Z: j/ f1 n7 [  `
数据表查询(单条):  u) q& v. ~" @* Q  F4 V4 z# {, @
方法:
, k1 X( K, b; U! T6 j& W3 kDB::fetch_first()
$ G" @" s9 ~* H2 W7 U& p6 [参数:
# I+ l% N$ y* P3 J* t. D" E$sql:查询数据的SQL语句& x* P! K  D. w3 p) X
$arg:绑定查询的参数+ Y/ b( t7 C6 x
$silent:查询失败是否不提示6 n+ Z0 C6 y, L, k+ ?6 G9 V0 ~
实例:
' }2 g" ]3 M2 v  J, \4 w' N: n$id = $_GET['id'];" }. W" R% M3 A9 U/ }6 H
DB::fetch_first('select * from %t where id=%d',array(
- g, ]! v& w  ~4 ]0 y'test_db',$id
5 F/ p3 R& z+ p9 S2 h));
, c# v% C( ~7 C4 ?8 H& F( o# E( ^) W
DB::fetch_first('select * from %t where name=%s',array(
3 J; {" W7 d( L! w'test_db','ccc'
- r! f1 T6 a# [; @4 w));
9 y" W* x7 z8 ?7 p  ^/ S8 ]/ x+ @; t# O! `- o/ y
' V% l1 a+ H: F$ J+ C6 E+ g

1 l1 J# J* H+ t5 K% U数据表查询(多条):
8 a- n) B+ |* e/ c方法:% A4 D6 r* h9 q- N  r
DB::fetch_all()7 G4 y3 @# ^9 a& C& m( U5 I! N7 g
参数:
" w! B0 f6 A2 Q$sql:查询数据的SQL语句
; y8 l4 l2 j- v4 t# b$arg:绑定查询的参数
. O( }+ G* O+ S8 W/ J$keyfield:一维索引的字段名称
' N  g# y! S8 K, C2 G+ O$silent:查询失败是否不提示
" r+ q, l" p, o5 X' u$ H实例:& U3 M) h  e0 ^  k
DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(4 B0 V7 F6 K( [! D' f8 l
'test_db',7,10) w! K! B) q) R1 N+ z5 B; _0 X) M! Y
));
5 |% N+ i; M! `: u- x7 A' _* ^
" @% X! R! T5 X3 ?DB::fetch_all('select * from %t where id IN (%n)',array(4 L" R0 }5 _1 A0 F# f
'test_db',array(1,2,3,4,5)8 P, d* R0 `0 U# n3 S
));+ w1 Q+ a. T( a* X) Z

- w( Y1 K0 R4 M/ ?数据表查询(单字段) 常用于统计查询:7 L7 L+ h% W7 ~4 m- M6 m1 E
方法:7 [( _# R5 Y/ y! N. n
DB::result_first()/ n7 l+ [4 M) n6 g4 @' v( n
参数:
( U2 B) X  N0 ~* W$sql:查询数据的SQL语句6 Z9 z# a1 b  d# E% b* t/ [" ^2 |, i( y
$arg:绑定查询的参数$ F2 p; H6 T' l; i% t6 }, {
$silent:查询失败是否不提示
* i3 R' X9 s/ J9 h0 o) s% ^9 f实例:
, I" Z( n( D- l1 Z$ k. J- W  S7 Q4 EDB::result_first('select name from %t where id=%d',array(
3 y6 m1 t. z* k6 R9 [; o/ V'test_db',1
+ u; S1 f: I( U* I% j));
/ ?6 ~# r3 a, v: X' M3 f
& W/ p1 d: I# x) V) n' U& jDB::result_first('select max(id) from %t',array(  j" Q' o4 Z0 x* v
'test_db': j: H* v6 @; {% E  }1 W5 y6 [
));
$ Q: v0 y, k2 [4 K5 L3 a3 z! a6 ^/ ?+ B
数据库自定义query' O3 @% M0 n: j; q6 B% B* {
方法:
! H5 L# H0 i+ j0 B- ~' ^DB::query()5 k+ c& W3 g  k! v! r0 M! H, j7 Y
参数:6 o0 L- k0 E  k
$sql:自定义SQL语句
8 z' y. N, B8 Y0 Z$arg:需要绑定的数据
- D+ k3 b8 D" [8 M( E$silent:执行SQL失败时,是否不提示  |5 |* R, J0 H- r$ V3 V
$unbufered:是否使用无缓存查询4 W) J; ~' ^0 x, ], W
实例:
* L' g+ s$ z& b8 r$query = DB::query("select * from %t where id IN (%n)",array(, u- I, l+ p3 o( I2 }. _6 F
'test_db',array(1,2,3)! [$ F0 f" \# o9 i
));
/ _  {! y% M0 O1 g# y7 N  ldebug($query);0 \% a, g* C( @: R" A+ y& ~
( K; a1 c- H$ l" A
删除+ S( |( H9 e, x8 D2 e9 c* B
DB::query("delete from %t where id = %id",array(% ^* r* a& ^' Z" ?8 t
'test_db',11
+ y& @2 r( ~7 N; P));
" M9 w- n5 j. T6 O9 g/ x8 S
) t* c6 r- Z; g% B; Y! c* o# ~- }1 ?/ B% L9 H- B* u5 [, y
资源集转换结果集
) t* |. r, x5 ?( M! v8 N方法:' M1 s  T3 j, q! s
DB::fetch()
7 j) Q1 Z: X& f+ _参数:" c- @" K. n) B6 @5 V' r3 x! e3 b
$resourceid:数据库查询的query资源* R2 u, R8 ]9 u0 D* W( H- `
$type:数组类型
& J" Z* [. U$ ]- _实例:
( S! p! y9 l; ?- a0 k$ `查询
7 d2 t& h5 [! A# {$query = DB::query("select * from %t where id IN (%n)",array(
6 d# u5 k8 X% T' ?'test_db',array(1,2,3)
  s6 t9 P( N+ L9 T' r( N));4 `' g1 R; B1 ^$ t% T! c
while($res = DB::fetch($query)){
! p/ D0 Z& ?5 [- F   $result[] = $res;
/ E6 f1 n  c+ v}# I2 ?; y, K' \6 Y0 U
debug($query);6 t7 o0 ?2 b, A$ \
. D4 @' I1 ]& l6 [$ p
单字段资源集转换结果集(一般用于查看获取统计值)
6 W6 q: ~8 a  V# Z" o方法:
4 }( N" N; V+ Q7 G; a  B: \: r! ZDB::result()0 e' Q6 ~; b1 Y
参数:
2 d" |7 R# T# B6 z$resourceid:数据库查询的query资源
6 z! e- g. Y8 l7 R0 s$row:指定行的第一个字段, {4 ?: I9 s2 {6 h
实例:
% A# U: T5 [" ^2 P$query =  DB::query("select count(*) from %t where id < %id order by id",array(
) H" R" K" d: _% Q'test_db',10- P6 {# k0 u" n5 b0 y) }$ x8 y% B
));
: |- s9 q, L, ?, l2 M+ T5 {$data = DB::result($query,1);
* l) W2 e7 E0 `9 \" x
1 }# l( b# H* H& G, ]4 A常用实例:, ?& z3 Q- j6 D1 D
$query = DB::query("select count(*) from %t where id > %d",array(
( {/ x* C- A/ ^, Y6 B( R'test_db',7
* |4 k8 |# K0 q% n( X3 a/ q));8 I$ [2 A* r2 k$ w& w
$data = DB::result($query,0);
; v1 g7 w0 l  m( Z$ Pecho $data;: v6 F0 A9 y+ [& O; M
8 ^# T2 |- B( A1 v% W
资源集行数计算(不适合统计太多的资源,速度慢)
$ U% q3 Z! W  f' ~  a, o方法:
8 v" y% l+ ^4 X# \  Y8 PDB::num_rows()
5 E; e4 Y) g3 U( A7 K参数:! M2 l. p0 t' t& {1 A) {1 I+ }! S
$resourceid:数据库查询的query资源+ m% ^7 c# K% c( i1 B
实例:: k( k; l4 H$ c$ C8 F2 y7 M3 E' D. G
$query = DB::query("select * from %t where id > %d",array(3 m, ~  v) q' U' m" U
'test_db',7- h1 K1 c3 Y. S5 K4 w: e* ]
));
2 \' D$ X+ `+ V5 D& m8 V' h: U$data = DB::num_rows($query);  m, _& q1 A1 V$ M
echo $data;  u1 I8 a0 h1 ]5 [

* O/ M( @& {4 t# b+ R  i( E" N' @资源集资源释放+ T8 O6 |' m5 t3 l1 C1 C
方法:1 m0 m1 `) G1 l# Z* u; [- ^; Z# s) e
DB::free_result()
0 G: c; o5 |$ V参数:' c. r# k0 {: _5 u  j
$query:执行SQL语句的query资源
1 k1 g% O0 a  ]' x  K  N# d$query = DB::query("select count(*) from %t where id > %d",array(
" X+ C( Y, E, j+ {, s2 }. [; Z'test_db',7; z5 l# i; X0 G9 e% h/ N
));
: D6 _) w. F/ D$ q1 |$ e! D$data = DB::result($query,0);$ t/ c7 ~2 `" t
DB::free_result($query);
$ X% f0 N+ H+ `2 Jecho $data;
- {' M/ O; {; z+ S2 I' {. C: s* l: I, s9 ]% Z7 ]' L! b: y6 ~( z
按字段排序' Y! F7 ]4 G7 ?+ e
方法:1 v/ w8 x( E$ g8 E9 l7 q  X
DB:rder()
$ ^, a7 G, S: d$ Q参数:
) M3 E6 e6 v  b3 s( X$field:需要排序的字段
! _6 y2 p$ E) O/ a$order:排序方式
+ q; z7 B  x# U" S实例:5 w' @' v% Q2 i# ?# W
$query = DB::query("select * from %t where id > %d order by".DB:rder('id','desc'),array(9 v9 y6 R( O* {5 ?& ]3 m$ D$ a
'test_db',7# W  S8 T1 {! n9 R$ O
));
0 o) z5 E) f) m) k/ _: G$data = DB::result($query,0);
9 P& q" m( k; @, ]# @- bDB::free_result($query);! `8 o$ L0 u) M+ e: ]& U) R: A
echo $data;5 J7 s, d+ {/ Q" Z2 M+ Z
6 H. m7 N/ o! a4 B5 ~! j
取值区间设定
7 b' i" R1 ^0 p/ }方法:. ]! S" k6 v0 C0 X; U" h$ j
DB::query()
/ e& {) q" a' n( z参数:) G. d$ T& z) l3 |9 u) B9 B0 Z
$start:开始的索引值8 }3 ?2 K4 r; E: o% ?
$limit:条目数# K# C( @9 K; q$ X/ ?4 P  n% o6 M
$query = DB::query("select * from %t where id > %d order by".DB:rder('id').DB::limit(0,3),array(
7 s8 S) `- {5 Z+ ?'test_db',7! m( k/ v1 r" l; v! O
));9 ?% @& k% n9 L
* I6 K. K9 R/ S$ U. u8 J9 [
字段拼接- \% I0 M4 W6 J0 l1 w: @/ _9 J* `
方法:
+ c8 g5 T7 P* V+ t; xDB::implode(), m0 q& r2 Q4 A& Y) M( R
参数:9 `! Q' L; j8 z  P
$array:需要拼接的字段数组
- F/ V" J- k. S/ t- z$glue:字段拼接的字符串, l% U+ a. W& L5 I
实例:
8 H1 Z6 t. L5 A) K! W  pecho DB::implode(array('id' => 10,'name' => 'ddd'),'and');
" b0 x7 E% J) {0 G3 g% r0 F4 a3 \* K5 E
应用:3 r8 P; T& _- v
DB::query("update %t set".DB::implode(array(/ v9 R% y  l4 k* H0 Z7 F! ~1 p* A% _
'name' => 'ddd',# N, Z6 y+ O! j0 N% q) f8 |0 n' K& f: k2 y
'id' => 22
; D* |0 u! U7 B( Y# `2 ?)).'where id=%d',array(
9 m% F- ]4 Y& g( @# T8 {, o'test_db',8 D( E6 U7 Z; \$ ~3 q' Q# @
10,- y, [# c, N  d+ o: t. g
)5 ^+ [( b6 \5 [
);
4 ]" L3 B! p; w/ z# n+ s
2 n/ q: G0 U# e/ E字段数据设定1 V/ _* F/ D2 u0 U/ L- C/ ?4 E
方法:
# e! w$ q% ]" fDB::field()& ^8 l2 t4 B, n
参数:8 R, c) `* l! H3 u% r
$field:需要排序的字段# u0 W+ m, Q7 u6 p2 z% o5 f5 P- ^
$val:字段对应的值
6 }3 Y5 a( M3 ~7 {$glue:连接字段与值的类型1 }# s4 H+ e$ ~
实例:  |" r& }& Q) Q  f
DB::field('id', 99, '=');
) |+ P/ O1 k5 t5 G) U4 C
% V" Z; |# _4 b/ W应用(把3改成99):
$ w" ^9 |# Q" \6 Z# s) v: c7 ?DB::query("update %t set ".DB::field('id', '99', =)." where id=%d",array(
: k6 t, V0 ~% y; r# s( m' Zarray('test_db', 3);4 w- y( V' d9 q; S! W0 F) d
));
2 ?6 N2 |0 t' k9 s( [5 o" m; s
想说又不敢说,说了又怕被拒绝,拒绝了又怕尴尬,就是这样的。内心很痛苦的那种。
江山狂念 发表于 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 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

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