Discuz二次开发插件开发数据库操作语句集合

php爱好者 2017-4-26 686

数据表插入:
方法:
public static function insert($table, $data, $return_insert_id = false, $replace = false, $silent = false)
参数:
$table:插入数据的表
$data:插入的数据,字段对应值
$return_insert_id:是否返回插入数据的ID
$replace:是否使用replace into(当原始表中存在不重复数据就插入,存在就更新)
$silent:操作失败是否不提示

实例
DB::insert('test_db',array(
 'name' => 'ppc',
),true,true);

数据表删除:
方法:
public static function delete($table, $condition, $limit = 0, $unbuffered = true)
参数:
$table:删除数据的表
$condition:删除的条件
$limit:删除满足条件的条目数
$unbufered:是否使用无缓存查询

实例:
DB::delete('test_db','id>2',1,true);

数据表更新:
方法:
public static function update($table, $data, $condition = '', $unbuffered = false, $low_priority = false)
参数:
$table:更新数据的表
$data:更新的数据,字段对应值
$condition:更新的条件
$unbufered:是否使用无缓存查询
$low_priority:是否采用无锁表更新

数据表查询(单条):
方法:
public static function fetch_first($sql, $arg = array(), $silent = false)
参数:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$silent:查询失败是否不提示
实例:
$id = $_GET['id'];
DB::fetch_first('select * from %t where id=%d',array(
 'test_db',$id
));

DB::fetch_first('select * from %t where name=%s',array(
 'test_db','ccc'
));



数据表查询(多条):
方法:
public static function fetch_all($sql, $arg = array(), $keyfield = '', $silent=false)
参数:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$keyfield:一维索引的字段名称
$silent:查询失败是否不提示
实例:
DB::fetch_all('select * from %t where id >= %d AND id<=%d',array(
 'test_db',7,10
));

DB::fetch_all('select * from %t where id IN (%n)',array(
 'test_db',array(1,2,3,4,5)
));

数据表查询(单字段) 常用于统计查询:
方法:
public static function result_first($sql, $arg = array(), $silent = false)
参数:
$sql:查询数据的SQL语句
$arg:绑定查询的参数
$silent:查询失败是否不提示
实例:
DB::result_first('select name from %t where id=%d',array(
 'test_db',1
));

DB::result_first('select max(id) from %t',array(
 'test_db'
));

数据库自定义query
方法:
public static function query($sql, $arg = array(), $silent = false, $unbuffered = false)
参数:
$sql:自定义SQL语句
$arg:需要绑定的数据
$silent:执行SQL失败时,是否不提示
$unbufered:是否使用无缓存查询
实例:
$query = DB::query("select * from %t where id IN (%n)",array(
 'test_db',array(1,2,3)
));
debug($query);

删除
DB::query("delete from %t where id = %id",array(
 'test_db',11
));


资源集转换结果集
方法:
public static function fetch($resourceid, $type = MYSQL_ASSOC)
参数:
$resourceid:数据库查询的query资源
$type:数组类型
实例:
查询
$query = DB::query("select * from %t where id IN (%n)",array(
 'test_db',array(1,2,3)
));
while($res = DB::fetch($query)){
   $result[] = $res;
}
debug($query);

单字段资源集转换结果集(一般用于查看获取统计值)
方法:
public static function result($resourceid, $row = 0)
参数:
$resourceid:数据库查询的query资源
$row:指定行的第一个字段
实例:
$query =  DB::query("select count(*) from %t where id < %id order by id",array(
 'test_db',10
));
$data = DB::result($query,1);

常用实例:
$query = DB::query("select count(*) from %t where id > %d",array(
 'test_db',7
));
$data = DB::result($query,0);
echo $data;

资源集行数计算(不适合统计太多的资源,速度慢)
方法:
public static function num_rows($resourceid)
参数:
$resourceid:数据库查询的query资源
实例:
$query = DB::query("select * from %t where id > %d",array(
 'test_db',7
));
$data = DB::num_rows($query);
echo $data;

资源集资源释放
方法:
public static function free_result($query)
参数:
$query:执行SQL语句的query资源
$query = DB::query("select count(*) from %t where id > %d",array(
 'test_db',7
));
$data = DB::result($query,0);
DB::free_result($query);
echo $data;

按字段排序
方法:
public static function order($field, $order = 'ASC')
参数:
$field:需要排序的字段
$order:排序方式
实例:
$query = DB::query("select * from %t where id > %d order by".DB::order('id','desc'),array(
 'test_db',7
));
$data = DB::result($query,0);
DB::free_result($query);
echo $data;

更多数据库操作方法参考网站目录source/class/discuz/discuz_database.php文件

最新回复 (0)
返回
发新帖