从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);";
}
答案 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
的额外列
mysqli_result::fetch_assoc
答案 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';
}