找回密码
 立即注册
搜索
查看: 1579|回复: 0

【discuz 插件教程】数据库操作(一)

[复制链接]

581

主题

110

回帖

4066

积分

管理员

积分
4066

众神之神

发表于 2014-11-5 21:52:39 | 显示全部楼层 |阅读模式
官方数据字典:http://faq.comsenz.com/library/database/x3/x3_index.htm

数据库规范:
http://open.discuz.net/?ac=document&page=dev_coderule

字段类型
字段类型存储空间(b)UNSIGNED取值范围
tinyint1-128~127
0~255
smallint2-32768~32767
0~65535
mediumint3-8388608~8388607
0~16777215
int4-2147483648~2147483647
0~4294967295
bigint8-9223372036854775808~9223372036854775807
0~18446744073709551615

数据表的插入操作(增)
方法名:
DB::insert()
参数解释:
$table:插入的数据表明
$data:插入的数据,字段对应值
$return_insert_id:是否返回插入数据的ID
$replace:是否使用replace into
$silent:操作失败是否不提示(默认提示)

repelce into 特性:
当原始表中存在不能重复的数据,replace into 就相当于update(更新);
当原始表中不存在不能重复的数据,replace into 就相当于insert into(插入);

代码示例:
  1. <?php
  2. echo DB:insert('test_db',array(
  3.         'id'='1',
  4.         'name'='ppc',
  5. ),true<span style="line-height: 1.5;">,true</span><span style="line-height: 1.5;">);</span>
复制代码


数据表的删除操作(删)
方法名:
DB:delete()
参数解释:
$table:要删除数据的表名
$condition:要删除的条件(如:id>2)
$limit:删除满足条件的条目数
$unbuffered:是否使用无缓存查询(默认为true。删除不需要缓存任何结果)
代码示例:
  1. <?php
  2. DB::delete('test_db','id>2',1,true);
  3. ?>
复制代码


数据表的更新操作(改)
方法名:
DB::update()
参数解释:
$table:更新数据的表名
$data:更新的数据,字段对应值,是一个数组形式,如array('name'=>'admin')
$condition:更新的条件(如:id>8)
$unbuffered:是否使用无缓存查询(省内存)
$low_priority:是否采用无锁表更新(可参考数据库锁操作,不常用)
代码示例:
  1. <?php

  2. DB::update('test_db',array(
  3. 'neme'=>'root',
  4. ),'id>8');
复制代码
绑定查询的参数解释(查)

表达式 数据处理
% t DB::table()自动添加表前缀
%dintval() 对数据进行整形化操作
%s addslashes对数据进行转义,防止注入漏洞,常用户字符串操作
%n IN(1,2,3)在集合中查询表ID值在1,2,3集合里的任意一个
%fsprintf('%f',$var)将数据格式化成浮点型,常用于浮点型操作
%i不做任何处理(使用不多)

数据表查询操作(单条)
方法名:DB::fetch_first()
参数解释:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$silent:查询失败时是否不提示


代码示例:
  1. <?php
  2. $id = 1;
  3. $data = DB::fetch_first("SELECT * FROM %t WHERE id = %d",array('test_db',$id
复制代码
数据表查询操作(多条)
方法名:
DB::fetch_all()
参数解释:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$keyfield:一维索引的字段名称(必须为唯一值)
$silent:查询失败时是否不提示
代码示例:
  1. <?php
  2.         $data = DB::fetch_all("SELECT * FROM %t WHERE id>= %d AND id<= %d",
  3.                 array(
  4.                                 'test_db',7,10
  5.                         ),'id');
  6.         /*数组中数据的个数与sql语句中表达式的个数是一样的
  7. 以上%t与‘test_db’对应,第一个%d与array中的7对应,第二个%d与array中的10对应
  8. */
  9. debug($data);
复制代码
数据表查询操作(单字段查询),主要用语统计查询方法名:
DB::result_first()
参数解释:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$silent:查询失败时是否不提示


代码实例1:
  1. <?php
  2. echo DB::result_first("SELECT name FROM %t WHERE id=%d",array(
  3.                 'test_db',1
  4.         ));
复制代码
代码实例2:
  1. <?php
  2.         echo DB::result_first("SELECT COUNT(*) FROM %t",array(
  3.                         'test_db'
  4.                 ));
复制代码


思考:取最大值MAX,等等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|十三博客 ( 鲁ICP备2023000528号 )

GMT+8, 2026-6-1 17:25 , Processed in 0.110828 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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