1、, array(gid=3, mynamejake);spUrl c=guestbook a=page gid=3 myname=c=guestbook&a=page&gid=3&myname=jake3.在二级目录中使用SpeedPHP框架的时候和在顶级目录使用spUrl一样,无需配置。如在程序中:输出将是:/sp/index.php?spArgs代替$_GET$_POST的数据获取spArgs是controller继承类的一个扩展方法,可以有两个参数,第一个参数是将要获取的参数名称,为空则返回全部参数的数组。第二个参数是默认值,当需要获取的参数为空时,将返回该默认值。表单中我们将提交nam
2、e,title和contents等参数。然后在程序当中:$name = $this-spArgs(name / 可以获取到表单的name,第二个参数是当name没有值时返回的默认值 $title = $this-title这里是默认标题 / 可以获取到表单的title if( $name = $this-) ) / name被提交 else / 没有提交 /如果spArgs没有输入参数,将返回全部的提交参数:dump($this-spArgs();/ 该语句在开发中常用作调试用/SpeedPHP框架的spController提供了jump、success、error等多种跳转模式。$this-
3、jump(spUrl(mainindex / 跳转到首页 jump( / 跳转到 PHP框架中session的使用PHP框架中session是一个数组,可以通过$_SESSIONkey = $value的方式对session赋值。如:$_SESSIONmyname = Helllo;echo $_SESSION;PHP框架中cookie的使用cookie在程序中使用通常作为“保持登录”或是跟踪访问者操作等。和session不同,cookie存放的位置,是在访问者的浏览器缓存中。cookie的使用有几个要素:过期时间、路径、域cookie可以通过setcookie函数设置:setcookie (
4、 COOKIE名字, COOKIE值, 过期时间, 路径, 域名 ); 过期时间:默认是会话时间长度,和session相同。 路径:默认是“/”,设置在当前域名下COOKIE生效的路径。域:域名,默认是当前网站域名。可以设置成 “”来使得整个网站(包括二级域名)都可以读取该COOKIE。1$value=这里是设置的值2setcookie(TestCookie,$value);/ 该cookie的过期时间是会话时间3,$value, time()+3600);/ 该cookie的过期时间是1小时,当前时间time() 加 3600秒(1小时)4,$value, time()+3600,/bbs/
5、 该cookie的过期时间是1小时,只在及二级域名的bbs目录下使用。cookie值可以用$_COOKIE数组来获取。echo$_COOKIETestCookiejson_encode函数会将普通数据编码,成为JSON格式的数据。(以下例子来自于)view source?php$arr=array(a1,b2,c3,d4,e5);echo$arr);json_decode函数可以将JSON格式的数据,还原成普通的变量数量。$json=a:1,b2,c3,d4,e5var_dump($json);5显示:object(stdClass)#1 (5) = int(1) int(2) int(3)
6、int(4) int(5)建立表驱动模型类classgbextendsspModelvar$table=gbvar$pk=6这些代码可以直接复制粘贴来使用,作为其他的表模型类的样板。class gb extends spModel,定义了一个名称为gb的PHP类,并且派生自spModel这个核心类。表驱动模型类都必须是spModel的派生类。简单来说就是“ extends spModel”这些代码是必须的。var $table = ,定义gb类对应的表名。当然加上数据表前缀的话,该表的全名应该是“spgb_gb”。var $pk = ,定义该数据表的主键名称,一般数据表的主键都是数值类型并且是
7、自增量。以上三个设置,是每个表驱动模型类都必须的,而且表驱动模型类一般是放置在应用程序目录下model的目录里面。当然这也在应用程序配置中修改该位置。find 从数据表中查找一条记录/ 首先需要准备查找条件$conditions=array(name小李$gb= spClass(gb/ 初始化留言本模型类$result=$gb-find($conditions);/ 查找dump($result);/ 查看结果,echo$resultcontents/ 直接输出结果中的留言内容,对应字段contentsfindAll 从数据表中查找记录findAll与find的区别在于findAll是返回全部
8、符合条件的记录,而find仅是返回findAll结果的第一条记录。举例:SELECT * FROM spgb_gb WHERE name = jake OR name = lin那么,如何使用findAll来查询呢?$conditions= name = findAll($conditions);1. 复合 OR 和 AND的查询查询名称为jake或lin的留言,而且留言的时间是在5月3日之后。SELECT * FROM spgb_gb WHERE ( name = ) AND post_time 2010-05-03 00:50:55而findAll就是:$conditions = ( na
9、me = $results = $gb-2. like模糊查找模糊查找在留言内容(contents)中有“SpeedPHP”一词的留言。SELECT * FROM spgb_gb WHERE contents like %SpeedPHP%而findAll是: contents like 添加删除修改查询create 在数据表中新增一行数据用法:create($row)参数:$row,数组形式,数组的键是数据表中的字段名,键对应的值是需要新增的数据。例子:01/* 首先是准备新增的数据02* 表中的gid因为是自增量,所以没必要去赋值03* replay因为是可为空,并且刚留言也不会有回复,所
10、以也可以不赋值04* 数组中的键是字段名称,值是数据05*/06$newrow=array(/ PHP的数组07,08这是我的第一个留言09post_timedate(Y-m-d H:i:s),10post_ip$_SERVERREMOTE_ADDRESS,111213$gb-create($newrow);/ 进行新增操作返回:新增成功则返回新增的自增量ID,失败则返回FALSE。update 修改数据,该函数将根据参数中设置的条件而更新表中数据。update($conditions, $row)$conditions,数组形式,查找条件,此参数的格式用法与find/findAll的查找条件
11、参数是相同的。$row,数组形式,修改的数据,此参数的格式用法与create的$row是相同的。在符合条件的记录中,将对$row设置的字段的数据进行修改。/ 将小李的第一条留言,也就是gid = 12的留言的内容修改成“我的第一条留言”。/ 构造查找条件gid12);/ 思考为什么不能用 = 来作为条件呢?/ 设置需要更新的字段,注意没必要更新的字段请不要设置。这里我们仅仅修改contents(内容)对应的数据。$row=array(我的第一条记录7update($conditions,$row);原来的数据表:12 小李 我的留言 2009-10-26 10:04:53 218.82.32.
12、1213 小李 我的第二条留言 2009-10-26 10:经过执行$gb-update($conditions, $row);后:12 小李 我的第一条留言 2009-10-26 10:返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。返回FALSE是语句执行失败delete 按条件删除记录delete($conditions)delete的操作将删除符合$conditions条件的记录。/ 这里我们将删除小李的第二条留言,也就是gid=13的记录13);/ 构造条件delete($conditions);gid为13的记录已被删除$sort,排序方法,等
13、于SQL语句中的ORDER BY(排序)首先我们来看看,通常SQL语句中的排序是如何实现的,比如说留言本中需要按照时间先后排序(正序,就是ASC,反序DESC)SELECT * FROM spgb_gb ORDER BY post_time ASC / 正序,也就是时间小的排前面SELECT * FROM spgb_gb ORDER BY post_time DESC / 反序,时间大的排前面 ORDER BY post_time ASC, replay DESC / 查询留言者是jake的留言,按时间正序然后回复反序的方式排列(一般按回复内容的头字母排列)而当我们使用find/findAll
14、的时候,可以:findAll(null, post_time ASC / 条件为空,排序是时间正序 post_time DESC / 条件为空,排序是时间反序findAll(array( ), post_time ASC, replay DESC / 条件为name=jake,排序是时间正序然后回复反序的方式排列$fields,仅获取的字段,等于SQL语句SELECT和FROM之间的返回字段,默认为 * (也就是返回所有字段)SELECT gid, name, contents FROM spgb_gbSELECT spgb_gb.gid, spgb_gd.name, spgb_gb.cont
15、ents FROM spgb_gb以上两条SQL语句的相等的,而第二条SQL语句在返回的字段名称前,加上的表全名,这样做更为严谨。而使用find/findAll,可以:findAll(null, null, gid, name, contents / 条件为空,排序为默认的主键ID排序,返回字段限制是gid, name, contents spgb_gb.gid, spgb_gd.name, spgb_gb.contents / 和上面相同在使用$fields的时候,请注意:$fields一定要包括排序$sort的字段,比如按时间排序,那么$fields是务必要包含时间字段。当$sort 为空
16、(默认)的时候,那么$field需要包含主键(因为默认$sort是按主键排序的)findCount 计算符合条件的记录数量findCount($conditions = null)该函数主要用于计算符合$conditions的记录数量。可以说findCount是相等于SQL语句的“SELECT COUNT(*) WHERE 条件”的返回结果/ 我们来看看数据表中有多少条留言者是“小李”的留言/ 条件是同样的$sum=$gb-findCount($conditions);/ 使用了findCountecho$sum;数据表中有留言者是小李的数据:findCount将得到结果:2,也就是有两条留言
17、者是“小李”的留言。返回符合$conditions记录的数量,如无任何符合条件的记录将返回 0。create在数据表中新增一行数据delete按条件删除记录update修改数据,该函数将根据参数中设置的条件而更新表中数据bool update(mixed conditions, array row) mixed conditions 数组形式,查找条件,此参数的格式用法与find/findAll的查找条件参数是相同的。 array row 数组形式,修改的数据,此参数的格式用法与create的$row是相同的。 返回TRUE则是语句执行成功,无论有无符合条件的记录,只要操作正常执行则返回TRUE。 返回FALSE是语句执行失败updateField按字段值修改一条记录bool updateField(mixed conditions, string field, string value) string field 字符串,对应数据表中的需要修改的字段名 string value 字符串,新值返回值参考update函数。/ 使用updateField
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1