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

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

    如果你想使用其它数据库表中的结果来填充当前的数据库表,你可以使用SELECT语句将其取出,然后在PHP中对其进行迭代并将其保存到新表中去,另外你还可以使用INSERT INTO...SELECT FROM查询,在这里从SELECT查询返回的每条记录都会送入到INSERT查询中。

    在这个例子中,我们想构建一个表"mytable",它包含两个字段节点ID和用户名,我们从数据库中取出所有page类型节点的对应信息,然后插入到表"mytable"中。
Drupal 6 

<?php
db_query('INSERT INTO {mytable} (nid, name) SELECT n.nid, u.name FROM {node} n LEFT JOIN {users} u on n.uid = u.uid WHERE n.type = "%s"', array ('page'));
?>

Drupal 7 

<?php

//构建选择查询
$query db_select('node''n');

//关联users
$query->join('users''u''n.uid = u.uid');

//添加我们想要的字段
$query->addField('n','nid');
$query->addField('u','name');

//添加一个条件,把节点限制在类型page上去。
$query->condition('type''page');

//执行插入
db_insert('mytable')
  ->from($query)
  ->execute();
?>


Drupal版本: