使用 PHP 将表 1 中的多个值插入到表 2 中

我尝试从表 1 中获取所有值,然后将它们推入一个数组中。然后我将数组插入表2,但收到错误消息:“非法字符串偏移量'name'”,“非法字符串偏移量'lat'”,“非法字符串偏移量'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);

       }

}


largeQ
浏览 104回答 2
2回答

海绵宝宝撒

由于您没有对数据执行任何任务,为什么不在 mysql 中通过直接使用 select 插入来完成整个操作呢?insert into `gpsdata_backup` ( `name`, `lat`, `lng` )    select `name`, `lat`, `lng` from `gpsdata`;IE:$sql='insert into `gpsdata_backup` ( `name`, `lat`, `lng` )    select `name`, `lat`, `lng` from `gpsdata`';    $result=$connect->query( $sql );

慕斯709654

就这样吧。非法的情况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);
打开App,查看更多内容
随时随地看视频慕课网APP