20 概貌
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
下面是一个有关users表的相对简单的查询。接下来我们会分析这个查询中的每个构成部分,以及会学习一些高级技巧比如表之间的关联。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
下面是一个有关users表的相对简单的查询。接下来我们会分析这个查询中的每个构成部分,以及会学习一些高级技巧比如表之间的关联。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
1. 概貌
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
动态查询指的是由Drupal动态的构建查询,而不是直接提供一个查询字符串。所有的插入、更新、删除、和合并查询都应该是动态的。选择查询可以是静态的,也可以是动态的。因此,一般动态查询指的就是动态的选择查询。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
也可以把查询的结果存放在自定义类的对象中去。例如,如果我们有一个名为ExampleClass的类,下面的查询则会返回类型为exampleClass的对象。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
选择查询总是返回一个结果集对象,它包含零个或多个记录。根据具体情况的不同,有多种方式可以用来从结果集中获取数据。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
db_query()的第3个参数,也就是连接对象query方法的第3个参数,是一个选项数组,用来指示查询应该如何执行。对于大多数的查询来说,常用的指令只有两个。其它值则大多数时候在内部使用。
"target"键用来指定所要使用的目标数据库。如果没有指定,则使用默认的"default"。在下面的例子中,有效值只有一个"slave",这表示如果存在一个从数据库,查询则运行在它的上面。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
Drupal的数据库层,包含了有关占位符的一个附加特性。对于一个占位符,如果传递给它的值是一个数组,它就会自动地将占位符扩展为逗号分隔的占位符列表,分别对应于数组中的元素。这意味着开发者不需要考虑他们需要多少个占位符。
我们通过实例来学习一下这一特性:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
占位符表示为了执行查询,将会向该位置插入对应的文字。通过将其从查询本身中分离出来,我们允许数据库区分SQL语法与用户输入值,因此可以避免SQL注入。