使用 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 );