SpeedPHP数据库操作教程二,Model功能全解析
时间:2009-12-08
来源:互联网
首先我们来看一下将会用到的数据表gb(如加上表前缀,则表全名为 spgb_gb),这是一个留言本程序使用的数据表。
=700) window.open('http://speedphp.com/wp/wp-content/uploads/spmodel-crud-table.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >
下面我们来看看spModel提供了哪些数据表操作函数,它们各有什么作用?
find —— 从数据表中查找一条记录
用法:find($conditions = null, $sort = null, $fields = null)
参数:
$conditions,数组形式,查找条件,数组的键是数据表中的字段名,键对应的值是该字段的条件。
比如要在留言本中查找到名为“小李”留言者的第一条留言,那么$conditions条件则应该是:
$conditions = array( // PHP数组
'name' => '小李', // 键name是数据表中的字段,小李是我们要查找的数据
);
*$sort,字符串,指定结果排序方向
*$fields,字符串,特殊指定返回的字段
在find,findAll,findSQL等多个查找函数以及update,delete等函数中出现的参数$conditions,除了可以是数组格式外,还可以是字符串的形式,而字符串形式的$conditions就如同SQL语句中的WHERE后面的条件字符串一样的使用。
如:
$conditions = array('name'=>'小李');
就等同于
$conditions = " 'name' = '小李' ";
例子:
如果数据表中有留言者是小李的数据:(有两条记录)
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
那么将返回
$result = array(
'gid' => 12,
'name' => '小李',
'contents' => '我的留言',
'post_time' => '2009-10-26 10:04:53',
'post_ip' => '218.82.32.12',
'replay' => ''
);
请注意,find仅是返回了第一条符合条件的记录。
返回:
按条件查询不到任何数据,find将返回FALSE
如查找到预期的结果则返回结果数组,数组的键是字段名,数组的值是数据。
findAll —— 从数据表中查找记录
findAll与find的区别在于findAll是返回全部符合条件的记录,而find仅是返回findAll结果的第一条记录。
用法:findAll($conditions = null, $sort = null, $fields = null, $limit = null)
参数:
$conditions,数组形式,查找条件,同find的$conditions
*$sort,字符串,指定结果排序方向
*$fields,字符串,特殊指定返回的字段
*$limit,字符串,返回结果数量限制
例子:
数据表中有留言者是小李的数据:
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
findAll将返回
返回:
按条件查询不到任何数据,findAll将返回FALSE
如查找到预期的结果则返回结果数组。对比find返回的结果,findAll是返回了二维数组,并且数组的每一项将是代表一条记录的数组。
create —— 在数据表中新增一行数据
用法:create($row)
参数:
$row,数组形式,数组的键是数据表中的字段名,键对应的值是需要新增的数据。
例子:
返回:
新增成功则返回新增的自增量ID,失败则返回FALSE。
update —— 修改数据,该函数将根据参数中设置的条件而更新表中数据。
用法:update($conditions, $row)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
$row,数组形式,修改的数据,此参数的格式用法与create的$row是相同的。在符合条件的记录中,将对$row设置的字段的数据进行修改。
例子:
原来的数据表:
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
经过执行$gb->update($conditions, $row);后:
12 小李 我的第一条留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
返回:
返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败
delete —— 按条件删除记录
用法:delete($conditions)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
delete的操作将删除符合$conditions条件的记录。
例子:
原来的数据表:
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
经过执行$gb->delete($conditions);后:
12 小李 我的第一条留言 2009-10-26 10:04:53 218.82.32.12
gid为13的记录已被删除
返回:
返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败
除了以上的spModel常规操作函数外,spModel还提供了一些简便操作的函数。
* findBy —— 按字段值查找一条记录
用法:findBy($field, $value)
参数:
$field,字符串,对应数据表中的字段名
$value,字符串,对应的值
该函数简化了find的操作:
返回值参考find函数。
* updateField —— 按字段值修改一条记录
用法:updateField($conditions, $field, $value)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
$field,字符串,对应数据表中的需要修改的字段名
$value,字符串,新值
该函数简化了update的操作:
返回值参考update函数。
* deleteByPk —— 按给定的数据表的主键删除记录
用法:deleteByPk($pk)
参数:
$pk,字符串或数字,数据表主键的值。
该函数简化了delete的操作,根据给定的主键删除对应的记录。
例子:
返回值参照delete函数。
* findCount —— 计算符合条件的记录数量
用法:findCount($conditions = null)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
该函数主要用于计算符合$conditions的记录数量。
例子:
数据表中有留言者是小李的数据:
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
findCount将得到结果:2,也就是有两条留言者是“小李”的留言。
返回:
返回符合$conditions记录的数量,如无任何符合条件的记录将返回 0。
以上就是spModel对于数据库操作的一些封装的操作函数,实践证明,这些函数几乎囊括了在日常的PHP程序开发中百分之八十以上的数据库操作。也就是说,在日常的数据库程序开发中,基本是不需要编写一行SQL语句就可以完成工作。
当然,在一些特殊的情况下,我们还是需要对数据表进行更为复杂的操作,那么我们就需要直接使用到SQL语句了,下一章节将介绍到spModel的SQL语句查询/操作的能力。
本文地址:http://speedphp.com/post/spmodel-all-functions.html
=700) window.open('http://speedphp.com/wp/wp-content/uploads/spmodel-crud-table.jpg');" onload="if(this.offsetWidth>'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" >
引用
有的时候我们会觉得数据库方面较难入门,因为看着书本上那些十几个字段的一些数据表例子,感觉自己怎么也不能设计出那么复杂的表结构。但其实这并非必要,在很多时候,我们可以先按自己的理解去建立出可以供自己使用的数据表,哪怕表中就两三个字段。字段将会随着程序的编写而继续增加,到了程序的完成之时,字段也就将近完整了。那么,到了下一次再编写同类的程序,那么这些字段就可以作为我们的参考。
下面我们来看看spModel提供了哪些数据表操作函数,它们各有什么作用?
find —— 从数据表中查找一条记录
用法:find($conditions = null, $sort = null, $fields = null)
参数:
$conditions,数组形式,查找条件,数组的键是数据表中的字段名,键对应的值是该字段的条件。
比如要在留言本中查找到名为“小李”留言者的第一条留言,那么$conditions条件则应该是:
$conditions = array( // PHP数组
'name' => '小李', // 键name是数据表中的字段,小李是我们要查找的数据
);
*$sort,字符串,指定结果排序方向
*$fields,字符串,特殊指定返回的字段
在find,findAll,findSQL等多个查找函数以及update,delete等函数中出现的参数$conditions,除了可以是数组格式外,还可以是字符串的形式,而字符串形式的$conditions就如同SQL语句中的WHERE后面的条件字符串一样的使用。
如:
$conditions = array('name'=>'小李');
就等同于
$conditions = " 'name' = '小李' ";
例子:
复制代码
|
如果数据表中有留言者是小李的数据:(有两条记录)
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
那么将返回
$result = array(
'gid' => 12,
'name' => '小李',
'contents' => '我的留言',
'post_time' => '2009-10-26 10:04:53',
'post_ip' => '218.82.32.12',
'replay' => ''
);
请注意,find仅是返回了第一条符合条件的记录。
返回:
按条件查询不到任何数据,find将返回FALSE
如查找到预期的结果则返回结果数组,数组的键是字段名,数组的值是数据。
引用
如查找到预期的结果则返回结果数组,数组的键是字段名,数组的值是数据。
这里需要注明一下,由于sp框架虽然简单易用,但是高级的功能也是非常多的,所以在介绍相关的类和函数的时候,会遇到一些较复杂的参数或者是函数,如上例中的$sort,$fields参数。为了我们可以尽快掌握sp框架进行实践开发,不受到这些在特殊情况下才用到的高级功能的影响,我们将并非必要理解的参数或函数标上了*号,而且也是仅做较少的说明,如果需要进一步了解这些参数或函数的作用,请参考sp框架手册或到网站上参与讨论。
这里需要注明一下,由于sp框架虽然简单易用,但是高级的功能也是非常多的,所以在介绍相关的类和函数的时候,会遇到一些较复杂的参数或者是函数,如上例中的$sort,$fields参数。为了我们可以尽快掌握sp框架进行实践开发,不受到这些在特殊情况下才用到的高级功能的影响,我们将并非必要理解的参数或函数标上了*号,而且也是仅做较少的说明,如果需要进一步了解这些参数或函数的作用,请参考sp框架手册或到网站上参与讨论。
findAll —— 从数据表中查找记录
findAll与find的区别在于findAll是返回全部符合条件的记录,而find仅是返回findAll结果的第一条记录。
用法:findAll($conditions = null, $sort = null, $fields = null, $limit = null)
参数:
$conditions,数组形式,查找条件,同find的$conditions
*$sort,字符串,指定结果排序方向
*$fields,字符串,特殊指定返回的字段
*$limit,字符串,返回结果数量限制
例子:
复制代码
|
数据表中有留言者是小李的数据:
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
findAll将返回
复制代码
|
返回:
按条件查询不到任何数据,findAll将返回FALSE
如查找到预期的结果则返回结果数组。对比find返回的结果,findAll是返回了二维数组,并且数组的每一项将是代表一条记录的数组。
create —— 在数据表中新增一行数据
用法:create($row)
参数:
$row,数组形式,数组的键是数据表中的字段名,键对应的值是需要新增的数据。
例子:
复制代码
|
返回:
新增成功则返回新增的自增量ID,失败则返回FALSE。
update —— 修改数据,该函数将根据参数中设置的条件而更新表中数据。
用法:update($conditions, $row)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
$row,数组形式,修改的数据,此参数的格式用法与create的$row是相同的。在符合条件的记录中,将对$row设置的字段的数据进行修改。
例子:
复制代码
|
原来的数据表:
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
经过执行$gb->update($conditions, $row);后:
12 小李 我的第一条留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
返回:
返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败
delete —— 按条件删除记录
用法:delete($conditions)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
delete的操作将删除符合$conditions条件的记录。
例子:
复制代码
|
原来的数据表:
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
经过执行$gb->delete($conditions);后:
12 小李 我的第一条留言 2009-10-26 10:04:53 218.82.32.12
gid为13的记录已被删除
返回:
返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。
返回FALSE是语句执行失败
除了以上的spModel常规操作函数外,spModel还提供了一些简便操作的函数。
引用
请注意,如果我们觉得上面的函数还需要时间去消化,那么下面这些函数可以跳过,等当我们通过实战教程熟悉了spModel常规函数后,再回头对这些函数进行了解。
* findBy —— 按字段值查找一条记录
用法:findBy($field, $value)
参数:
$field,字符串,对应数据表中的字段名
$value,字符串,对应的值
该函数简化了find的操作:
复制代码
|
返回值参考find函数。
* updateField —— 按字段值修改一条记录
用法:updateField($conditions, $field, $value)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
$field,字符串,对应数据表中的需要修改的字段名
$value,字符串,新值
该函数简化了update的操作:
复制代码
|
返回值参考update函数。
* deleteByPk —— 按给定的数据表的主键删除记录
用法:deleteByPk($pk)
参数:
$pk,字符串或数字,数据表主键的值。
该函数简化了delete的操作,根据给定的主键删除对应的记录。
例子:
复制代码
|
返回值参照delete函数。
* findCount —— 计算符合条件的记录数量
用法:findCount($conditions = null)
参数:
$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。
该函数主要用于计算符合$conditions的记录数量。
例子:
复制代码
|
数据表中有留言者是小李的数据:
12 小李 我的留言 2009-10-26 10:04:53 218.82.32.12
13 小李 我的第二条留言 2009-10-26 10:04:53 218.82.32.12
findCount将得到结果:2,也就是有两条留言者是“小李”的留言。
返回:
返回符合$conditions记录的数量,如无任何符合条件的记录将返回 0。
以上就是spModel对于数据库操作的一些封装的操作函数,实践证明,这些函数几乎囊括了在日常的PHP程序开发中百分之八十以上的数据库操作。也就是说,在日常的数据库程序开发中,基本是不需要编写一行SQL语句就可以完成工作。
当然,在一些特殊的情况下,我们还是需要对数据表进行更为复杂的操作,那么我们就需要直接使用到SQL语句了,下一章节将介绍到spModel的SQL语句查询/操作的能力。
本文地址:http://speedphp.com/post/spmodel-all-functions.html
[ 此帖被jake在2009-12-08 10:05重新编辑 ]
作者: jake 发布时间: 2009-12-08
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28