mysql insert problem

luchs3

Erfahrenes Mitglied
Hi Leute,

Hab ein Problem mit meinem Insert Statement.

Ich möchte einen Datensatz von einer Datenbank in eine andere kopieren.

Abfrage passt, aber ein paar Variablen sind halt null.
bsp.:
PHP:
mysql_query("INSERT INTO kon (kon_id, kon_erstdat,...) VALUE ('$row[0], $row[1],...)");
Beim Insert gibt er mir den Fehler aus, dass es ein incorrect data value ist.
In der Spaltendefinition ist aber null erlaubt.
Es geht nur wenn ich manuell die variable definiere.

Keine Ahnung wo es da happert.
Bitte um Hilfe
Danke im vorraus,
Niko
 
Hallo,

poste bitte die genaue Fehlermeldung und /oder die Abfrage mit gefüllten Daten - so kann dir niemand helfen.

Viele Grüße
Robert
 
Also,
Die korrekte Fehlermeldung lautet:

Incorrect date value: '' for column 'kon_chdat' at row 1

Mein konkretes Problem ist, dass ich zwei Datenbanken synchronisieren möchte.
Wäre nicht so ein Problem (INSERT INTO kon SELECT ...) aber die Spaltennamen
sind leider in beiden Datenbanken gleich.
Deshalb lese ich zuerst die Daten der einen db in ein Array um sie anschließend mit einem INSERT in die Andere db einzufügen.
Problem ist nur wie bereits erwähnt, dass manche einträge NULL sind.
Ich könnte natürlich alle Variablen überprüfen, aber das sollte doch nicht notwendig sein,
da in der Spaltendefinition NULL erlaubt ist.
 
Ich gehe mal davon aus, die Datenbanken nicht auf dem gleichen Host liegen, denn dann würdest du das ohne PHP machen.

Nun das Problem ist hier, das ein Feld mit einem NULL Value von PHP als '' ausgewertet wird. Dieser Leerstring entspricht beim INSERT aber nicht NULL - das Type Casting stimmt also nicht. Du könntest dir nun eine Funktion schreiben, die das Problem behebt.

Viele Grüße
Robert
 
Stimmt, hab manuell eingesetzt, dann hat es funktioniert.

Nur irgendwie hab ich gerade einen Knopf im Hirn und bring die Schleife zum umbenennen nicht zusammen. Ich glaub da stimmt was mit dem Array nicht.

PHP:
for ($i = 0; $i < 28; $i++) {
    if (isset($row[$i])) {
        $row[$i] = "'$row[$i]'";
    }
}
 
Zurück