#1 jake
数据库操作类,用户的模型类继承于spModel将可以获得最为常用的数据库操作功能。
- public
- $table -- 数据表表名称
- $pk -- 数据表主键
- $addrules -- 增加的自定义验证函数
- $verifier -- 供检验值的规则与返回信息
- $linker -- 表间关联的设置
- protected
- $tbl_name -- 数据表全名称
- $_db -- 数据驱动程序
成员函数
public
- __construct -- 构造函数
- find -- 从数据表中查找一条记录
- findAll -- 从数据表中查找记录
- findSql -- 使用SQL语句进行查找操作,等于进行find,findAll等操作
- findBy -- 按字段值查找一条记录
- findCount -- 计算符合条件的记录数量
- create -- 在数据表中新增一行数据
- createAll -- 在数据表中新增多条记录
- update -- 修改数据,该函数将根据参数中设置的条件而更新表中数据
- updateField -- 按字段值修改一条记录
- delete -- 按条件删除记录
- deleteByPk -- 按给定的数据表的主键删除记录
- query -- 执行SQL语句,相等于执行新增,修改,删除等操作
- dumpSql -- 返回最后执行的SQL语句供分析
- __val_escape -- 过滤转义字符
- __call -- 魔术函数,执行模型扩展类的自动加载及使用
private
- __prepera_format -- 按表字段调整适合的字段
位置
spModel类位于 SP_PATH/Core/spModel.php
函数详细__construct
构造函数
void __construct( void )
spModel类的构造函数,按应用程序配置进行数据库链接操作。
请注意,如spModel的子类,即是继承于spModel的数据模型类中覆盖了构造函数__construct(),开发者需要在子类的构造函数中调用父类的__construct(),才可以保证数据库的链接有效性。
class mymodel extends spModel{find
function __construct(){
// 一些操作
parent::__construct();
}
}
从数据表中查找一条记录
array find(mixed conditions, string sort, string fields)
参数:
- mixed conditions 查找条件,数组array("字段名"=>"查找值")或字符串,请注意在使用字符串时将需要开发者自行使用__val_escape来对输入值进行过滤
- string sort 排序,等同于“ORDER BY ”
- string fields 返回的字段范围,默认为返回全部字段的值
返回:
- 按条件查询不到任何数据,find将返回FALSE
- 如查找到预期的结果则返回结果数组,数组的键是字段名,数组的值是数据。
从数据表中查找记录
array findAll(mixed conditions, string sort, string fields, string limit)
参数:
- mixed conditions 查找条件,数组array("字段名"=>"查找值")或字符串,请注意在使用字符串时将需要开发者自行使用__val_escape来对输入值进行过滤
- string sort 排序,等同于“ORDER BY ”
- string fields 返回的字段范围,默认为返回全部字段的值
- string limit 返回的结果数量限制,等同于“LIMIT ”,如$limit = " 3, 5",即是从第3条记录开始获取,共获取5条记录
返回:
- 按条件查询不到任何数据,findAll将返回FALSE
- 如查找到预期的结果则返回结果数组。对比find返回的结果,findAll是返回了二维数组,并且数组的每一项将是代表一条记录的数组。
使用SQL语句进行查找操作,等于进行find,findAll等操作
array findSql(sql_string sql)
参数:
- sql_string sql 字符串,需要进行查找的SQL语句
返回:
- 如SQL语句执行成功并且获取到记录,则返回多维数组,形式与findAll返回结果相同。
- 如无法查找到记录,则返回FALSE。
使用findSql()时,请注意:
- 使用数据表的全名
- 使用__val_escape()过滤浏览器提交的值
按字段值查找一条记录
array findBy(string field, string value)
参数:
- string field 字符串,对应数据表中的字段名
- string value 字符串,对应的值
返回:
- 按条件查询不到任何数据,findBy将返回FALSE
- 如查找到预期的结果则返回结果数组,数组的键是字段名,数组的值是数据。
计算符合条件的记录数量
int findCount(mixed conditions)
参数:
- mixed conditions 查找条件,数组array("字段名"=>"查找值")或字符串,请注意在使用字符串时将需要开发者自行使用__val_escape来对输入值进行过滤
返回:
返回符合$conditions记录的数量,如无任何符合条件的记录将返回 0。
create在数据表中新增一行数据
int create(array row)
参数:
- array row 数组形式,数组的键是数据表中的字段名,键对应的值是需要新增的数据。
返回:
新增成功则返回新增的自增量ID,失败则返回FALSE。
createAll在数据表中新增多条记录
void createAll(array rows)
参数:
- array rows 数组形式,每项均为create的$row的一个数组
修改数据,该函数将根据参数中设置的条件而更新表中数据
bool update(mixed conditions, array row)
参数:
- mixed conditions 数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
- array row 数组形式,修改的数据,此参数的格式用法与create的$row是相同的。在符合条件的记录中,将对$row设置的字段的数据进行修改。
返回:
- 返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
- 返回FALSE是语句执行失败
按字段值修改一条记录
bool updateField(mixed conditions, string field, string value)
参数:
- mixed conditions 数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
- string field 字符串,对应数据表中的需要修改的字段名
- string value 字符串,新值
返回:
返回值参考update函数。
delete按条件删除记录
bool delete(mixed conditions )
参数:
- mixed conditions 数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
返回:
- 返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
- 返回FALSE是语句执行失败
按给定的数据表的主键删除记录,该函数简化了delete的操作,根据给定的主键删除对应的记录。
bool deleteByPk(mixed pk)
参数:
- mixed pk 字符串或数字,数据表主键的值。
返回:
返回值参考delete函数。
query执行SQL语句,相等于执行新增,修改,删除等操作
bool query(string sql)
参数:
- string sql 字符串,需要执行的SQL语句
返回:
- 返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
- 返回FALSE是语句执行失败。
使用query()时,请注意:
- 使用数据表的全名
- 使用__val_escape()过滤浏览器提交的值
返回最后执行的SQL语句供分析
string dumpSql(void)
__val_escape过滤转义字符,保证数据库执行语句的安全。
__val_escape()将直接调用数据库驱动的__val_escape()函数进行字符过滤。
string __val_escape(string value)
参数:
- string value 需要进行过滤的值
返回:
返回通过安全过滤的值。
__call魔术函数,执行模型扩展类的自动加载及使用
__call()可以让spModel类支持更广泛的用途,如加入spLinker等关联的操作同时具备分页功能。
__prepera_format私有函数,按表字段调整适合的字段
array __prepera_format(array rows)
参数:
- array rows 输入的表字段
返回:
__prepera_format()将根据当前数据表的字段整理返回适合的字段。
2012-08-06 20:18:32