SpeedPHP/spModel数据库操作类

来自站长百科
跳转至: 导航、​ 搜索

SpeedPHP | 快速入门 | 访问交互 | 数据操作 | 框架概述 | 模板引擎 | 优化加速 | 开发指南 | 数据模型 | API参考

数据库操作类,用户的模型类继承于spModel将可以获得最为常用的数据库操作功能。

成员变量[ ]

public[ ]

  • $table -- 数据表表名称
  • $pk -- 数据表主键
  • $addrules -- 增加的自定义验证函数
  • $verifier -- 供检验值的规则与返回信息
  • $linker -- 表间关联的设置

protected[ ]

成员函数[ ]

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{
	function __construct(){
		// 一些操作

		parent::__construct();
	}
}

find[ ]

从数据表中查找一条记录

array find(mixed conditions, string sort, string fields)

参数:

  • mixed conditions 查找条件,数组array("字段名"=>"查找值")或字符串,请注意在使用字符串时将需要开发者自行使用__val_escape来对输入值进行过滤
  • string sort 排序,等同于“ORDER BY ”
  • string fields 返回的字段范围,默认为返回全部字段的值

返回:

  • 按条件查询不到任何数据,find将返回FALSE
  • 如查找到预期的结果则返回结果数组,数组的键是字段名,数组的值是数据。

findAll[ ]

从数据表中查找记录

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是返回了二维数组,并且数组的每一项将是代表一条记录的数组。

findSql[ ]

使用SQL语句进行查找操作,等于进行find,findAll等操作

array findSql(sql_string sql)

参数:

sql_string sql 字符串,需要进行查找的SQL语句

返回:

  • 如SQL语句执行成功并且获取到记录,则返回多维数组,形式与findAll返回结果相同。
  • 如无法查找到记录,则返回FALSE。

使用findSql()时,请注意:

  • 使用数据表的全名
  • 使用__val_escape()过滤浏览器提交的值

findBy[ ]

按字段值查找一条记录

array findBy(string field, string value)

参数:

  • string field 字符串,对应数据表中的字段名
  • string value 字符串,对应的值

返回:

  • 按条件查询不到任何数据,findBy将返回FALSE
  • 如查找到预期的结果则返回结果数组,数组的键是字段名,数组的值是数据。

findCount[ ]

计算符合条件的记录数量

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的一个数组

update[ ]

修改数据,该函数将根据参数中设置的条件而更新表中数据

bool update(mixed conditions, array row)

参数:

  • mixed conditions 数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
  • array row 数组形式,修改的数据,此参数的格式用法与create的$row是相同的。在符合条件的记录中,将对$row设置的字段的数据进行修改。

返回:

  • 返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
  • 返回FALSE是语句执行失败

updateField[ ]

按字段值修改一条记录

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是语句执行失败

deleteByPk[ ]

按给定的数据表的主键删除记录,该函数简化了delete的操作,根据给定的主键删除对应的记录。

bool deleteByPk(mixed pk)

参数:

mixed pk 字符串或数字,数据表主键的值。

返回:

返回值参考delete函数。

query[ ]

执行SQL语句,相等于执行新增,修改,删除等操作

bool query(string sql)

参数:

string sql 字符串,需要执行的SQL语句

返回:

  • 返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
  • 返回FALSE是语句执行失败。

使用query()时,请注意:

  • 使用数据表的全名
  • 使用__val_escape()过滤浏览器提交的值

dumpSql[ ]

返回最后执行的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()将根据当前数据表的字段整理返回适合的字段。

参考来源[ ]

http://speedphp.com/manual.html

SpeedPHP使用手册导航

快速入门

开始使用SpeedPHP | 制作留言本 | 简便的数据表操作 | 用Smarty来显示页面

访问交互

入口文件 | 控制器架构 | 网址生成与PATH_INFO | 获取提交数据 | URLRewrite伪静态 | 自定义伪静态URL | 几种跳转 | 多语言实现 | 权限控制 | session、cookie | Ajax应用

数据操作

编写数据模型类 | 常规操作CRUD | 安全过滤 | 简化操作spDB | 数据变量存储 | 缓存配置

框架概述

单入口应用程序 | 架构设计 | 第三方类库及扩展功能 | UTF8编码与GBK版本 | SAE云计算版

模板引擎

模板引擎配置 | 使用Smarty | Smarty开发教程 | 自动显示模板| speedy教程 | 为什么使用模板其常见问题 | 模板包含文件 | 注册函数 | 全局变量赋值 | CSS和JS的路径

优化加速

生成静态HTML概述 | 生成HTML的使用 | 分页 | 高效函数缓存器| 模板引擎缓存

开发指南

核心函数 | 格式输出变量调试dump | 载入包含文件import | 类实例化函数spClass | 开发流程 | 目录结构、路径设置 | 大规模系统部署 | 用户自定义及全局操作 | 自定义函数库 | 自定义类库 | 自定义404页面 | 程序调试dump变量调试安全建议及命名建议

数据模型

高级数据库操作 | 数据表一对一关联 | 数据表一对多关联 | 数据表多对多关联 | 一表关联多表 | 关联结果的条件限制 | 关联结果在Smarty模板中显示 | 多数据库、数据表 | 多种类型数据库的配置 | 重写CRUD操作| 业务数据封装 | 数据函数复合调用

API参考

spModel数据库操作类 | spPager分页类 | spVerifier数据验证类 | spCache函数数据缓存类 | spLinker数据表关联实现类 | spView视图类 | spHtml静态HTML生成类 | spController控制器类 | spArgs环境参数类 | 配置 | 数据库驱动类 | 模板驱动类 | import载入文件