CURD操作类(cls_lurd.php)

Source:phpbone.com  Author:IT柏拉图
2013-11-25

    phpbone的CURD操作类并不像别的一些ORM类库那样,把数据表映射成一个对象,因为这不符合简洁的主张,cls_lurd对数据表结构进行自动分析,根据用户输入数据生成相对应的sql语句进行操作。
    cls_lurd类没有构造函数,通过下面方式初始化:

  1. $tb = cls_lurd::factory( $tablename ); 

一、公共成员变量
$string_safe    文本内容安全级别(0 为不处理, 1 为禁止不安全HTML内容(javascript等),2完全禁止HTML内容,并替换部份不安全字符串(如:eval(、union、CONCAT(、--、等))
此变量推荐用 set_safe_check( val ); 方法操作。

$page_size   = 25  分页大小

$lock_fields  =  array insert/update 操作锁定不允许操作的字段

二、公共成员函数

1、重新指定数据表
$tb->set_table( $tablename )

2、初始化一个表实例
$tb = cls_lurd::factory($tablename)

3、获取上次 insert 操作产生的id
$tb->insert_id()

4、 获取上次操作影响的行数
$tb->affected_rows()

5、 限定插入、更新操作时传递过来的字段名(每次进行操作前都必须限制,因为操作后系统会清空这个属性)
$tb->set_lock_fields( $fieldstr )
$fieldstr 用 ',' 分开的字段列表

6、清空限定插入、更新操作时传递过来的字段名
$tb->clear_lock_fields( )
   
7、 向数据表插入一条数据(只获得SQL)
$tb->get_insert($key_value_array, $tablename)
参数列表:
$key_value_array    字段名=>value的key-value数组
$tablename           表名(一般来说,如果初始化时指定了表名,此值设置为空即下,以下相同)
此方法只返回sql,不进行实际操作

8、 向数据表插入一条数据
$tb->insert($key_value_array, $tablename, $use_default, $insert_id )
参数列表:
$key_value_array
$tablename    这个参数可以为空
$use_default   是否使用数据表设定的默认值
bool $insert_id        是否返回insert_id;
返回sql执行结果或insert_id

9、更新数据
$tb->update( $key_value_array, $condition, $tablename)
参数列表:
$key_value_array
$condition     限定条件(如果key_value_array含有主键,此项可以不设置)
$tablename    这个参数可以为空
$use_default   是否使用数据表设定的默认值
返回值:sql执行结果

10、删除数据表的一条或多条记录
$tb->delete( $primarykey_values, $tablename )
$primarykey_values   需要删除的主键值列表
$tablename    这个参数可以为空
返回值:执行的删除操作的sql次数(不管是否成功)

11、删除数据表的指定条件的记录
$tb->delete_one( $condition='', $tablename='' )
$condition  手动指定更新条件(务必预先做好安全检查)
$tablename    这个参数可以为空
返回值:sql执行结果
   
12、增加搜索条件
$tb->add_search_parameter($fieldname, $fieldvalue, $condition, $linkmode='and')
参数列表:
$fieldname 字段名称
$fieldvalue 传入的 value 值必须先经过转义
$condition 条件 >、<、=、<> 、like、%like%、%like、like%
$linkmode and 或 or
 
13、列出数据(查询)
$tb->get_datas( $pageno, $listfield, $orderquery, $wherequery, $tablename, $count_row )    *
参数列表:
$pageno  获取第 $pageno 页的数据,具体位移和$tb->page_size的值有关
$listfield = ''
指定要列出的字段(默认为'*') ,只需填写当前表
联结表需列出的字段在 join_table() 指定, 因此不需要 表名.字段名 表示字段
$orderquery = '' 排序query,如果联结了其它表,需用 表名.字段名 表示字段
$tablename    这个参数可以为空
$count_row   是否统计总记录数
返回值:
array(
'data' => array(),
'total_result' => 总记录数($count_row参数必须为true下面值才有效),
'total_page' => 总页数,
'page_no' => 当前页码
)

$tb->get_datas2( $start = 0, $listfield = '*', $orderquery ='', $wherequery='', $tablename='', $count_row=true )
这函数和上面的函数功能一样,但是数据位移使用的是直接的位移,而不是pageno

获取带分页列表的查询数据
$tb->get_pagination_datas($start = 0, $url='?', $listfield = '*', $orderquery ='', $wherequery='', $tablename='', $count_row=true)
与上函数比,主要多了$url参数,要用于分页列表,返回值多了 'pagination' => 分页列表HTML字符串

14、获取单条记录
$tb->get_one( $wherequery='', $tablename='', $listfield = '*')
参数列表:
$wherequery = '' 查询query,如果联结了其它表,需用 表名.字段名 表示字段
返回值:array

15、联结其它表(用于数据查询的情况)
$tb->join_table($tablename, $mylinkid, $linkid, $linkfields='*')
参数列表:
$tablename 表名
$mylinkid 当前表用于联结的字段
$linkid 目标表用于联结的字段
$linkfields  需查询的字段

16、设置插入数据库的字符串的安全级别
$tb->set_safe_check( $step = 1 )
参数列表:
$step --- 0 为不处理, 1 为禁止不安全HTML内容(javascript等),2完全禁止HTML内容,并替换部份不安全字符串(如:eval(、union、CONCAT(、--、等)
介绍公共成员变量时,曾经说过,不建议直接修改$string_safe变量改变这个设置,是因为在set_safe_check,当step为 0时,同时会把db类的过滤一起禁用,以便插入某些特殊数据。

 

分享到: