45 基于选择查询的结果插入

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:15

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
如果你想使用其它数据库表中的结果来填充当前的数据库表,你可以使用SELECT语句将其取出,然后在PHP中对其进行迭代并将其保存到新表中去,另外你还可以使用INSERT INTO...SELECT FROM查询,在这里从SELECT查询返回的每条记录都会送入到INSERT查询中。

Drupal版本:

44 多值插入形式

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:09

​作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
插入查询对象上还可以使用多值集合。也就是说,values()可被调用多次,从而将多个插入语句排在一起调用。这种形式的具体执行情况,则取决于数据库自身的能力。对于大多数的数据库,多值插入语句都会放在一个事务中一起执行,这样能够保证更好的数据一致性和执行效率。对于MySQL,它将会使用MySQL的多值插入语法。

Drupal版本:

43 退化形式

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:08

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
$nid = db_insert('node')
->fields(array('title', 'uid', 'created'))
->values(array(
'title' => 'Example',
'uid' => 1,
'created' => REQUEST_TIME,
))
->execute();
?>

Drupal版本:

42 紧凑形式

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:07

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com​
对于大多数插入查询,推荐的形式就是紧凑形式:

Drupal版本:

41 插入查询

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:06

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
插入查询必须使用一个查询构建器对象。对于LOB (大对象, 比如MySQL中的TEXT) 和BLOB(二进制大对象)字段,某些数据库需要特殊处理,所以我们需要一个抽象层,从而允许独立的数据库驱动,按照它们自己的要求实现自己的特殊处理。
插入查询使用db_insert()函数作为开始,如下所示:

Drupal版本:

40 hook_query_alter()

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:06

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
标签化和元数据本身并不起任何作用。它们的存在就是为hook_query_alter()提供信息,在hook_query_alter()中,可对选择查询作任何修改。
所有的动态选择对象都是通过execute()方法,在查询字符串被编译之前,传递给hook_query_alter()的。这就为模块提供了一个机会,方便它们按照自己的需要来操作查询。hook_query_alter()接收单个参数:选择查询对象本身。

Drupal版本:

39 元数据

admin 的头像
Submitted by admin on 星期二, 2015-06-09 03:03

​作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
还可以为查询添加一些元数据,从而为alter钩子提供附加的上下文信息。元数据可以是任意的PHP变量,也可以用一个字符串作为键。

Drupal版本:

页面

Subscribe to Think in Drupal RSS