5.统计查询如果严格来区分,统计查询并不算查询语言的讲述范畴,因为在ThinkPHP中要进行字段数值统计并不需要额外定义数组元素,只需要更改显示方式即可。......
2023-11-04
虽然系统已经将数据库操作进行了OOP封装,完善的CURD操作及表达式能够满足大部分需求,但还不能完全代替传统的SQL语言,尤其在一些复杂的SQL查询中,所以系统也提供了传统的SQL语言查询。在Model模型中,有3种方式可以使用原生的SQL语言,下面分别进行介绍。
1.query方法
query方法的使用比较简单和直观,接受的参数即为完整的SQL语句。这里所说的SQL语句是带完整数据表名的(包含前缀)查询语言。query方法返回的结果是一个数据集,可以直接分配到模板中,如以下代码所示。
直接使用query方法执行SQL语句需要给出完整的数据表名,这时在DB_PREFIX配置文件中的配置项就变得毫无作用了,如果数据表前缀一旦变更,就会给代码维护带来严重的困难。这里可以使用两种方式进行解决:一种直接用使用C函数获取DB_PREFIX表前缀,以变量的方式替换SQL语句中的数据表名称;另外一种是将当前动作名或方法名改成与数据表名相同,在SQL语句中使用__TABLE__替换符进行替换。使用原生SQL语句后,所有的参数入口需要手动过滤,常用的过滤函数有mysql_escape_string、addslashes、escapeshellarg等。
2.execute方法(www.chuimin.cn)
execute方法和query方法是一样的,使用方式也一样,唯一不同的是execute方法不会返回数据集,也不会返回受影响行数,甚至连错误信息都不返回。通常情况下query用于获取数据,execute方法用于后台插入、更新数据。如以下代码所示。
3.exp操作表达式
exp操作表达式是介于CURD表达式与传统SQL之间的一种查询方式,为这两种方式找到了一个平衡点。在exp表达式中,开发人员可以完全使用标准的SQL语句(where部分)进行数据操作,包括查询、更新、删除等,如以下代码所示。
原生的SQL语句建议只用于一些特殊的操作,因为原生的SQL语句是有一定的局限性的,比如部署多数据库应用时,需要处理各种数据库SQL语言之间的差异。此外,使用原生的SQL查询需要读者手动进行查询缓存(exp表达式除外)。
有关PHP MVC开发实战的文章
5.统计查询如果严格来区分,统计查询并不算查询语言的讲述范畴,因为在ThinkPHP中要进行字段数值统计并不需要额外定义数组元素,只需要更改显示方式即可。......
2023-11-04
现在许多人仍将在这个原型之后推出的SQL语言发音为“sequel”,但根据ANSⅠSQL委员会的规定,其正式发音应该是“ess cue ell”。随着SQL语言的颁布,各数据库厂商纷纷在他们的产品中引入并支持SQL语言,但尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间也存在着一定的差异,这些差异不利于初学者的学习。因此,本章主要介绍标准的SQL语言,即基本SQL。尽管如此,SQL-89仍有许多不足或不能满足应用需求的地方。......
2023-11-24
实现一维动态数组的基本步骤为:①定义合适数据类型的一级指针变量。③将动态分配存储区域的首地址转换为所需要的指针形式赋值给对应的指针变量。④将指针变量名作为一维数组名操作。为了模拟数据,程序中仍然要求被排序数组用随机函数生成。例8.18的程序除了被处理的数组是动态创建的之外,程序的功能和结构在第4章中已经进行了讨论,请读者参照第4章的知识自行分析。使用动态一维数组时,需要注意和直接定义一维数组之间的差异。......
2023-11-20
在ThinkPHP模板中需要使用“|”分隔符引入函数,然后使用“=”号来为函数赋参。在模板中调用formatTime自定义函数和调用PHP内置的函数是一样的。这里只是简单地演示在模板中怎样使用函数,在实际应用开发中,读者可根据需要在模板标签中引入函数。在ThinkPHP模板引擎中,使用函数嵌套的顺序由左到右,即模板引擎最先解释左边的函数,最终的结果由最右边的函数决定,如以下代码所示。......
2023-11-04
首先需要使用content方法连接上Memcached服务器,代码如下所示。接下来将继续使用Memcache成员方法对缓存数据库进行操作。stats cachedump:显示slabs指定范围内的缓存项,例如stats cachedump 0,3。......
2023-11-04
接下来将使用CodeIgniter实现一个简单的新闻列表,用户点击列表中的新闻标题将会进入新闻的正文页面,通过该例子演示CodeIgniter实现MVC开发的流程。在CodeIgniter中,控制器命名规则比较灵活,它不需要加前缀或后缀,一个普通的文件即可。......
2023-11-04
ThinkPHP的模板引擎高效之处在于灵活的视图标签,熟悉这些标签的使用方式将能够提高视图模板的设计水平。接下来将从基本的创建视图开始,然后深入介绍默认视图引擎的使用。创建一个视图可分为以下几个步骤。需要注意的是,使用默认的{$}边界符,在视图模板中使用JavaScript等脚本时,有可能造成冲突。ThinkPHP内置了多种视图引擎,在默认情况下系统会使用内置的视图引擎,如果使用第三方的视图引擎,变量的分配方式会有所不同。......
2023-11-04
在11.1.2节中,已经介绍过ThinkPHP虽然可以切换到Smarty模板引擎,但这种切换方式是指标签解释的方式上,并不包括Smarty模板扩展功能。但可以通过ThinkPHP扩展的方式引入Smarty,从而实现全功能的Smarty模板引擎。本章接下来的全部内容基于ThinkPHP+Smarty环境。读者在实验时可以使用普通的模板代码,这里只是为了减少代码量,方便讲解,对Smarty的功能介绍并无影响。图13-4 在ThinkPHP中使用Smarty......
2023-11-04
相关推荐