Input类库是ThinkPHP提供的一个字符串输入处理扩展,能够方便地对字符串进行安全过滤、转义等,下面将对Input扩展类公开可调用的方法进行介绍。URL协议支持https、ftp等,运行结果为“http://beauty-soft.net”。其中参数string表示需要进行省略处理的字符串;参数length表示省略的字符数。safeHtml通常用于过滤表单输入,防止用户输入HTML代码破坏数据安全性。......
2023-11-04
在应用程序中数据库的操作主要分为4大类:创建数据(Create)、更新数据(Updata)、读取数据(Read)及删除数据(Delete),简称CURD。主流的MVC框架都会对CURD操作进行封装,以达到易用、灵活的目的。CURD是Web开发的重点,一套MVC成不成熟、稳不稳定很大程度上取决于CURD处理方式。ThinkPHP的CURD操作是以连贯操作为基础的,通常情况下这两者会配合使用。下面分别进行介绍。
1.创建数据(add)
前面已经介绍过功能强大的create方法,在CURD操作中细化了create方法的步骤,但底层处理机是相同的。创建数据可以使用add方法,该方法接收一个关联数组作为参数传入(键值对),最终生成的数据对象和表中的结构是一样的。如以下代码所示。
可以看到,与create方法相比,在数据细化方面,开发人员需要手动创建数组,并且将创建的数组作为参数传入add方法。add方法是Model类的一个实例方法,该方法能够对参数中的数组信息进行过滤、转换,最终提交给DB类中的insert方法,完成数据的插入。add方法处理数据是可靠、安全的,所以就算开发人员不对数据进行处理,这些数据进入数据表时都是安全的。add方法还可以结合data连贯操作方法一起使用,如以下代码所示。
效果和使用参数传递是一样的。上述示例中数组信息是和tpk_article表结构是一样的,在实际应用开发中需要根据需求进行更改。
2.更新数据(save)
可以创建数据,当然也能够更新数据。在ThinkPHP中对数据的更新基本上和创建数据一样。开发人员不需要针对数据库编写set操作,只需要使用save方法即可。继续以tpk_article为例,如果需要更新id为2的记录,那么只需要在save参数中指定id即可,如以下代码所示。
当然,在实际应用开发中id的值应该取自于$_POST或者$_GET。save的使用方式和add基本一样,为了数据表安全,系统不允许提交空更新条件的操作,如上述代码中的$data["id"]即为更新条件,id为操作主键,在没有条件时均可作为操作条件。如果数据表或更新条件不以id作为主键,那么可以配合where连贯操作来限定条件,如以下代码所示。
以上是save方法的使用,在更新操作中系统还提供了针对不同更新类型的快捷方法。如下所示。
➢setField('表字段','值'):更新单个字段的值,需要配合where连贯操作使用。(www.chuimin.cn)
➢setInc('字段',增加值):对表中的特定字段增加数值,该字段的类型必须为int类型。需要配合where连贯操作使用。
➢setLazyInc('字段',增加值,时间):支持延迟更新的setInc,时间以秒为单位。
➢setDec('字段',减少值):对表中的特定字段减少数值,该字段的类型必须为int类型。需要配合where连贯操作使用。
➢setLazyDec('字段',减少值,时间):支持延迟更新的setDec,时间以秒为单位。
3.读取数据(select)
在前面的内容中已经多次接触过select方法,该方法为CURD操作中最常用的方法。select方法返回的是二维数组,本身并不会格式化数据,需要在视图中使用volist循环标签进行处理。如果需要返回单条数据可以配合limit连贯操作,或者使用find方法(后者不完全兼容volist标签)。由于它的使用方式在前面的内容中已经多次出现,在此就不再细述。这里需要注意的是,select方法默认情况下会将数据表中的字段全部输出,这会造成资源浪费,解决的办法是配合getField连贯操作,如以下代码所示。
4.删除数据(delete)
delete方法可以方便地删除数据,delete配合where连贯操作可以根据条件进行删除操作,如果配合limit还可以实现简单的批量删除。当然也可以配合PHP中的foreach或者for语句进行批量删除,delete的使用方式和select基本一样,这里就不作过多介绍,下面将以代码演示delete方法的使用。
如果数据表的主键为id,并且以id作为删除条件,那么还可以直接在delete方法中传入id参数,如以下代码所示。
有关PHP MVC开发实战的文章
Input类库是ThinkPHP提供的一个字符串输入处理扩展,能够方便地对字符串进行安全过滤、转义等,下面将对Input扩展类公开可调用的方法进行介绍。URL协议支持https、ftp等,运行结果为“http://beauty-soft.net”。其中参数string表示需要进行省略处理的字符串;参数length表示省略的字符数。safeHtml通常用于过滤表单输入,防止用户输入HTML代码破坏数据安全性。......
2023-11-04
接下来将以HAS_ONE、BELONGS_TO、HAS_MANY这3种最常见的关联模型类型作为讲解对象,深入浅出地介绍关联模型的CURD实际应用。关联查询可以使用所有Model基础模型的CURD操作方法,例如find、delete等。HAS_MANY是关联模型中最常用的操作,HAS_MANY的使用非常简单,和HAS_ONE相比,只需要修改其中的关系类型即可,其他的元素几乎不用修改。......
2023-11-04
PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。但是在MVC设计模式中,Index称为动作。当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。......
2023-11-04
Smarty并不是一项新的PHP技术,而在PHP 4.x以前就已经是非常流行的界面与后台相分离的技术。直至现在,Smarty依然盛行,这点从各大招聘网站中可见一斑。所以要深入理解这两者之间的关系,还需要读者真正掌握Smarty的使用。图13-1 Smarty前台后分离图13-2 Smarty执行流程相信读者对Smarty的执行流程并不陌生,因为前面介绍的ThinkPHP模板引擎就是以相同的方式处理模板的。所以本章重点介绍Smarty引擎,读者在深入掌握该模板引擎的使用后,将会对MVC设计有更深入的认识。......
2023-11-04
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
上述XML代码共有两条新闻数据,通过浏览器直接访问将能够正确识别。由于DOM首先将XML载入内存,这就意味着在引擎还没最终输出结果前,开发人员可以对内存中的数据进行增、删、改,这也是DOM最为强大的功能。DOM查询XML前面使用ASX引擎能够方便地对XML数据进行查询,接下来将使用DOM进行同样的查询操作,帮助读者加深对DOM与SAX的认识。......
2023-11-04
系统共支持7种模式扩展,下面将分别对最常用的几种模式进行介绍。表11-1 CURD操作接口如表11-1所示,参数$data表示传入或返回的数据信息;参数$options表示返回当前操作的模型名称及表前缀。......
2023-11-04
Eclipse是IBM的一个商业项目,2001年11月起IBM将Eclipse贡献给开源社区,从此奠定了Eclipse的地位。Eclipse通过PDT插件来提供PHP开发支持,Eclipse PDT能够让编写PHP变得简单和高效,下面将介绍Eclipse PDT的安装和使用。Eclipse PDT的安装有两种方式,一种是直接通过Eclipse的扩展进行安装;另一种是下载带PDT插件的Eclipse。下面将以Eclipse3.5.2作为基础,讲解Eclipse PDT插件的安装过程。如果下载带PDT插件的Eclipse,只需要双击Eclipse启动程序即可,此时Eclipse就提供了完美的PHP编程支持。......
2023-11-04
相关推荐