9 $databases语法
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
$databases数组是一个至少包含3层的嵌套数组。第一层定义了数据库的键。第二层定义了数据库目标。每个目标的值就是对应的连接信息。通过实例我们可以更好的理解这一点。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
$databases数组是一个至少包含3层的嵌套数组。第一层定义了数据库的键。第二层定义了数据库目标。每个目标的值就是对应的连接信息。通过实例我们可以更好的理解这一点。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
一个给定的连接键,必须有一个或者多个目标。一个目标就是一个可选的备用数据库。如果请求的目标没有定义,系统就会自动采用“默认”目标,这是必须要定义的。
目标的主要用途就是主从数据库。默认目标是主SQL服务器。接着可以定义一个或多个“从”目标。对于标记为尝试使用从服务器的查询,如果从服务器可用,那么它们就会尝试访问“从”目标。如果有一个从服务器可用,那么就会打开对应的连接,并运行相应的查询。如果没有从服务器可用,那么查询就会运行在主服务器上。这样,就有了一个透明的回退,如果有从服务器可用,代码就会利用从服务器,如果没有从服务器可用,代码无需修改,仍然能够正常工作。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
连接键是给定数据库连接的唯一标识符。对于给定站点,连接键必须是唯一的,并且必须有一个"default"连接,用作Drupal的主数据库。对于大多数站点,这可能也是唯一定义的连接。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
定义一个数据库连接的主要方式,是使用settings.php中的$databases数组。从它的名字,我们就可以看出,$databases允许定义多个数据库连接。它还支持定义多个目标。只有在对该数据库运行查询时,才会打开对应的数据库连接,或者说是创建相应的连接对象。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
语句对象就是选择(Select)查询的结果。它的类型应该是DatabaseStatement,或者是DatabaseStatement的子类。DatabaseStatement扩展了PDOStatement类。
Drupal为所有的查询使用预处理语句(prepared statements)。一个预处理语句就是一个查询的模板,将会向模板中填充数值然后执行。我们可以把预处理语句看作是SQL的函数形式,需要向里面传递一些参数才可使用。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
一个查询就是传递给数据库连接的SQL语句。Drupal的数据库系统支持6种类型的查询:静态、动态、插入、更新、删除,还有合并。有些查询采用SQL字符串模板(准备语句)的形式,有些则采用面向对象的查询构建器。“查询对象”表示一个查询构建器的实例,适用于各种查询类型。
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
一个连接就是类DatabaseConnection的一个对象,这个类继承自PDO类。Drupal要连接的每个数据库,都有一个唯一的连接对象与之关联。对于每个独立的驱动,该连接对象必须是一个子类。
为了访问(并打开,如果需要的话)一个连接对象,使用:
作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
由于数据库的不同,需要的交互方式也不相同,所以Drupal的数据库层需要为每个数据库类型提供一个驱动。驱动对应文件都放在includes/database/driver中,在这里driver就是表示该驱动的唯一字符串。大多数情况,驱动的键,就是数据库名字的小写版,比如"mysql", "pgsql",或"mycustomdriver"。