使用 PHP 将取自 table 1 的多个值插入 table 2
Insert multiple value taken from table 1 into table 2 using PHP
我尝试从 table 1 中获取所有值,然后将它们放入一个数组中。然后我将数组插入 table 2,但我得到的错误是:"Illegal string offset 'name'","Illegal string offset 'lat'", "Illegal字符串偏移量 'lng' "
我已搜索此错误并尝试修复它,但我做不到。有人可以帮我吗?
这是我的代码:
$query = "DELETE FROM gpsdata";
$query_input = "SELECT name, lat, lng FROM gpsdata";
$result = mysqli_query($connect, $query_input);
while ($data = mysqli_fetch_array($result)) {
if (is_array($data)) {
$sql = array();
foreach ($data as $row) {
$sql[] = '(' . $row['name'] . ', ' . $row['lat'] . ', ' . $row['lng'] . ')';
};
$query2 = "INSERT INTO gpsdata_backup (name, lat, lng) VALUES ' . implode(',', $sql)'";
$result_insert = mysqli_query($connect, $query2);
}
}
给你。非法 offset error
即将到来,因为您有一个不必要的 inner foreach loop
,因此在您的 $row
数组中找不到值。这不是必需的
// Array declaration to be on top
$sql = array();
$query_input = "SELECT name, lat, lng FROM gpsdata";
$result = mysqli_query($connect, $query_input);
while ($data = mysqli_fetch_array($result)) {
if (is_array($data)) {
// Enclose string values in quotes
$sql[] = '("' . $data['name'] . '", "' . $data['lat'] . '", "' . $data['lng'] . '")';
}
}
// Final insert should not be inside the loop
$query2 = "INSERT INTO gpsdata_backup (name, lat, lng) VALUES ".implode(",",$sql);
$result_insert = mysqli_query($connect, $query2);
由于您没有对数据执行任何任务,为什么不通过直接插入 select 来完成 mysql 中的整个操作?
insert into `gpsdata_backup` ( `name`, `lat`, `lng` )
select `name`, `lat`, `lng` from `gpsdata`;
即:
$sql='insert into `gpsdata_backup` ( `name`, `lat`, `lng` )
select `name`, `lat`, `lng` from `gpsdata`';
$result=$connect->query( $sql );
我尝试从 table 1 中获取所有值,然后将它们放入一个数组中。然后我将数组插入 table 2,但我得到的错误是:"Illegal string offset 'name'","Illegal string offset 'lat'", "Illegal字符串偏移量 'lng' " 我已搜索此错误并尝试修复它,但我做不到。有人可以帮我吗? 这是我的代码:
$query = "DELETE FROM gpsdata";
$query_input = "SELECT name, lat, lng FROM gpsdata";
$result = mysqli_query($connect, $query_input);
while ($data = mysqli_fetch_array($result)) {
if (is_array($data)) {
$sql = array();
foreach ($data as $row) {
$sql[] = '(' . $row['name'] . ', ' . $row['lat'] . ', ' . $row['lng'] . ')';
};
$query2 = "INSERT INTO gpsdata_backup (name, lat, lng) VALUES ' . implode(',', $sql)'";
$result_insert = mysqli_query($connect, $query2);
}
}
给你。非法 offset error
即将到来,因为您有一个不必要的 inner foreach loop
,因此在您的 $row
数组中找不到值。这不是必需的
// Array declaration to be on top
$sql = array();
$query_input = "SELECT name, lat, lng FROM gpsdata";
$result = mysqli_query($connect, $query_input);
while ($data = mysqli_fetch_array($result)) {
if (is_array($data)) {
// Enclose string values in quotes
$sql[] = '("' . $data['name'] . '", "' . $data['lat'] . '", "' . $data['lng'] . '")';
}
}
// Final insert should not be inside the loop
$query2 = "INSERT INTO gpsdata_backup (name, lat, lng) VALUES ".implode(",",$sql);
$result_insert = mysqli_query($connect, $query2);
由于您没有对数据执行任何任务,为什么不通过直接插入 select 来完成 mysql 中的整个操作?
insert into `gpsdata_backup` ( `name`, `lat`, `lng` )
select `name`, `lat`, `lng` from `gpsdata`;
即:
$sql='insert into `gpsdata_backup` ( `name`, `lat`, `lng` )
select `name`, `lat`, `lng` from `gpsdata`';
$result=$connect->query( $sql );