以下是我的疑问:
$result4 = $this->db->query('SELECT team_leader_id FROM teams WHERE team_money < 0')->result_array();
$this->db->insert( 'd_teams', array( 'leader_id' => $result4[0]['team_leader_id'] ) );
是的,它可以工作,但它仅适用于1行,例如可以有多个甚至50个。我如何编辑它以便它将支持select查询返回的所有可用行?因此,它会将它们全部插入到d_teams表的不同行中。 非常感谢!
答案 0 :(得分:2)
我相信您尝试做的事情可以使用子查询:
INSERT INTO d_teams (leader_id) (SELECT team_leader_id FROM teams WHERE team_money < 0);
所以,在你的代码中:
$this->db->query('INSERT INTO d_teams (leader_id) (SELECT team_leader_id FROM teams WHERE team_money < 0)');
答案 1 :(得分:0)
您可以尝试在遍历insert
的循环中使用$result4
函数:
$result4 = $this->db->query('SELECT team_leader_id FROM teams WHERE team_money < 0')->result_array();
foreach($result4 as $result) {
$this->db->insert( 'd_teams', array( 'leader_id' => $result['team_leader_id'] ) );
}
也许还有另一种插入多行的方法。但这应该有用。
答案 2 :(得分:0)
此SO答案解释了如何使用CodeIgniter执行批量插入:https://stackoverflow.com/a/17875754/365296
在你的情况下,我猜应用它看起来像这样:
$result4 = $this->db->query('SELECT ... ')->result_array();
$teams = array_map(function ($dbRow) {
return array('leader_id' => $dbRow['team_leader_id']);
}, $result4);
$this->db->insert_batch('d_teams', $teams);