将表的结果插入到具有两个foreach循环的另一个表中

时间:2017-06-02 21:40:20

标签: php mysql foreach insert entity-relationship

我正在尝试获取表的结果并将其插入另一个表中。结果是用户ID。这段代码应该有效,但事实并非如此。

$query1 = "SELECT id FROM users";                           
$select1 = $db->prepare($query1);
$select1->execute(array());  
foreach($select as $index => $rs) {

    $users = $rs['id'];

    // the results are 1,2,3,4,5,6,7,8... (the user id's)

}



// Here below, I want to add the results into another table...

foreach ($users as $row){
    $query2 = "INSERT INTO validateuser (userid) VALUES (".$row.")";

    $select2 = $db->prepare($query2);
    $select2->execute(array());  
}

2 个答案:

答案 0 :(得分:2)

这对我来说似乎过于复杂。为什么不让数据库做最好的数据库 - 处理数据,并在单个insert-select语句中执行此操作?

root
 |-- time: timestamp (nullable = true)
 |-- action: string (nullable = true)

修改:
要回答评论中提出的问题,可以选择INSERT INTO validateuser (userid) SELECT id FROM users 值作为文字:

'validated'

答案 1 :(得分:1)

当您使用= link_to qm_input_path('hour') do ... <a class="navbar-brand" href="/qimen/hour/input"> ... 迭代第一个查询的结果时,可以使用render layout: 'input' = link_to qm_chart_path(@foo, @bar), class: 'btn btn-default pull-right next' do ... <a class="btn btn-default pull-right next" href="/qimen/hour/chart/foo/bar"> ... 设置为结果的每一行的ID。

在循环结束时,render layout: guess_layout 将包含最后一行的id,因为它每次都被覆盖。它不可迭代(它是一个int),所以foreach($select as $index => $rs)没有意义。

你可能打算做$users。但是,如果您只是将它们全部插入,那么您可以在一个查询中执行此操作,就像其他答案所示。