Verschieben einer Zeile von einer Tabelle in eine andere (Werteliste einfügen stimmt nicht mit Spaltenliste überein)

Ich verwende den Fluent Query Builder des Laravel PHP Framework, um Zeilen von einer Tabelle in eine andere zu verschieben. PDO wird verwendet. Während der Verwendung der RohdatenabfrageDB::query()Ich bekomme den Fehler:

Error

SQLSTATE[21S01]: Insert value list does not match column list: 
1136 Column count doesn't match value count at row 1

SQL: INSERT IGNORE into listings_archive VALUES (?, ?)

Abfrage

// Get rows from first table
$rows = DB::table('table_1')
        ->where('id', '>', '12345')
        ->get();

// Copy rows to second table
foreach($rows as $row) {
    $listing = get_object_vars($row);
    DB::query('INSERT IGNORE into table_2 VALUES (?, ?)', $row);
}

var_dump von $ row

array(39) {
    ["id"]=>
    string(7) "2511877"
    ["name"]=>
    string(2) "AB"
    ["color"]=>
    NULL
    ["type"]=>
    NULL
    ...

Was verursacht den Fehler und wie kann er behoben werden? Ich habe versucht, die Elemente mit zu entfernenNULLs bekomme aber trotzdem den gleichen fehler!

AKTUALISIEREN

Dies ist möglicherweise ein Problem mit dem Array, in das übergeben wirdDB::query(). Dieses sehr einfache Beispiel ergab ähnliche Fehler:

$row = array('id', 123);
DB::query('INSERT IGNORE into table_2 VALUES (?, ?)', $row);

und

$row = array('id' => 123);
DB::query('INSERT IGNORE into table_2 VALUES (?, ?)', $row);

Error

SQLSTATE[21S01]: Insert value list does not match column list: 
1136 Column count doesn't match value count at row 1

Antworten auf die Frage(2)

Ihre Antwort auf die Frage