首页 理论教育PHPMVC开发实战:数据库CURD操作简介

PHPMVC开发实战:数据库CURD操作简介

【摘要】:在应用程序中数据库的操作主要分为4大类:创建数据、更新数据、读取数据及删除数据,简称CURD。主流的MVC框架都会对CURD操作进行封装,以达到易用、灵活的目的。ThinkPHP的CURD操作是以连贯操作为基础的,通常情况下这两者会配合使用。

在应用程序中数据库的操作主要分为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参数,如以下代码所示。