将fetch_assoc()数组数据写入表

时间:2016-03-05 23:33:45

标签: php mysql

fetch_assoc()引用数组组件的正确方法是什么,以便将它们插入到另一个表中?

这是我目前的代码:

$sql_read = "SELECT id, data1, data2, date FROM `table1`";   
$result = $mysqli->query($sql_read);    
if ($result !== false) {    
    $rows = $result->fetch_all();   
}

while ($row = $result->fetch_assoc()){  
    $sql_write = "INSERT INTO `table2`.`load_records` (`id`, `data1`,`data2`,`date`) VALUES ('.$row['id']', '.$row['data1']', '.$row['data2']', '.$row['date']', NULL);";
}

3 个答案:

答案 0 :(得分:0)

VALUES中有一个额外的字段未在INTO中引用,并且行数据的串联不正确;

$sql_write = "INSERT INTO `table2`.`load_records` 
       (`id`, `data1`,`data2`,`date`) 
VALUES ('.$row['id'].', '.$row['data1']', '.$row['data2']', '.$row['date']', NULL);";

应该是:

$sql_write = "INSERT INTO `table2`.`load_records` 
       (`id`, `data1`,`data2`,`date`) 
VALUES ('".$row['id']."', '".$row['data1']."', '".$row['data2']."', '".$row['date']."');";

或者您需要更新INTO以包含一个接受NULL的额外列

另见:

答案 1 :(得分:0)

正如我的评论中所建议的,首先你的选择陈述应该是:

"SELECT id, data1, data2, date FROM `table1`";  

此外,insert语句应该是(参见字符串连接的使用):

"INSERT INTO `table2`.`load_records` (`id`, `data1`,`data2`,`date`) VALUES ('".$row['id']."', '".$row['data1']."', '".$row['data2']."', '".$row['date']."', NULL);";

答案 2 :(得分:0)

正如已经指出的那样,您的脚本中存在一些错误 但您可能也对INSERT语法的INSERT INTO ... SELECT变体感兴趣。

<?php
$query = '
    INSERT INTO
        table2
        (`id`, `data1`,`data2`,`date`)
    SELECT 
        `id`, `data1`,`data2`,`date`
    FROM
        table1
';
$result = $mysqli->query($query);
if ( !$result ) {
    trigger_error('error: ' . $mysqli->error, E_USER_ERROR);
}
else {
    echo $mysqli->affected_rows, ' rows have been transfered';
}