Datum einfügen -> Fehler

philbo

Mitglied
Hallo...
ich hab folgendes Problem:
Ich habe ein Java-Programm, mit einer MySQL-Anbindung.
Aus dem Programm werden durch einen Klick Daten in meine DB geschrieben.
Bisher hatte ich die Applikation mit einer Access-DB laufen, da ging auch alles wunderbar. Jetzt mit MySQL nicht mehr.
Also, ich habe einen SQL-String, der wie folgt aussieht:
Code:
INSERT INTO Schulungsunterlagen VALUES ('Buch', 'test', '123', '456', '789', 'abc', '07.07.2004')

Daraufhin bekomme ich immer folgenden Fehler:
General error: Column count doesn't match value count at row 1 1136 S1000

Liegt dies evtl am Datum? Ich vermute, dass das in nem anderen Format geschrieben muss, wie muss die Formatierung da aussehen?
Ich hoffe mir kann jemand weiterhelfen.

Danke schonmal und Gruß
Philipp
 
Nein, das liegt daran, dass Du noch mehr Spalten in Deiner Tabelle hast als Du Values angegeben hast.

Der INSERT Befehl geht so:

PHP:
INSERT INTO tabellenname (spaltenname1, spaltenname2) VALUES (value1, value2);

So, darauf bezieht sich zumindest die Fehlermeldung.

Das Datum wird so wahrscheinlich auch nicht korrekt eingetragen. Versuchs mal mit jjjj-mm-dd. Bin ich mir aber auch nicht ganz sicher. Einfach mal so eintragen und nachsehen, obs richtig in der Datenbank steht.
 
Zuletzt bearbeitet:
Ich würde dir, der Übersicht wegen, folgende Schreibweise empfehlen:
Code:
UPDATE INTO
        `tabelle`
  SET
        `spalte1` = 'wert1',
        `spalte2` = 'wert2',
        [...]
 
Ohje Gumbo, jetzt bring den philbo nicht völlig durcheinander mit den verschiedenen sql-statements. Hier gehts nämlich nicht um Übersichtlichkeit, sondern um "Wie frage ich meine Datenbank richtig ab".
 
Danke, stimmt - es lag an den zu wenigen Werten...der erste ist ein Auto-Increment, und bei Access brauch man dann gar nix angeben. Deshalb hatte ich den vergessen...
Nun muss ich aber irgendwie noch mein Datum formatiert kriegen, wenn ich jetzt 07.07.04 als Datum eintrage, hat er in der DB 2007-07-20.
Irgendwie muss ich das wohl mit DATE_Format formatieren, bloß wie?

Gruß
Philipp
 
Also, nochmal:

Das Datum wird so wahrscheinlich auch nicht korrekt eingetragen. Versuchs mal mit jjjj-mm-dd (also "2004-07-01" - nimm mal nicht den 07.07., sondern z.b. den 01.07., dann kannst Du nämlich auch überprüfen, obs richtig ist). Bin ich mir aber auch nicht ganz sicher. Einfach mal so eintragen und nachsehen, obs richtig in der Datenbank steht.

Das date_format() kannst Du dann benutzen, wenn Du die Daten wieder abfragen wilst. Machen wir jetzt erstmal das Eintragen....ok?
 
Ja, mit jjjj-mm-tt geht es.
Allerdings ist das Textfeld in meiner JAVA-Applikation standard-mäßig mit dem aktuellen Datum im Format tt.mm.jjjj belegt, und das würde ich auch gerne so lassen, daher muss ich es eben irgendwie umwandeln.
 
Ob es da eine Funktion für gibt, die Dir das direkt konvertiert, weiss ich nicht. Aber die Funktion [phpf]substr[/phpf] könnte Dir sicherlich weiterhelfen, um selber zu konvertieren.
 
Falls du es noch nicht hast:
Du wandelst das Datum einfach vor dem Eintragen mit der Funktion(PHP)

PHP:
function crunch($datum) {
if(eregi("^[0,1,2,3]{1}[0-9]{1}\.[0,1]{1}[0-9]{1}\.[1,2]{1}[0-9]{3}$",$datum)){

ereg( "([0-9]{2})\.([0-9]{2})\.([0-9]{4})", $datum, $regs );
$datum="$regs[3]-$regs[2]-$regs[1]";
}

elseif(eregi("^[1,2]{1}[0-9]{3}-[0,1]{1}[0-9]{1}-[0,1,2,3]{1}[0-9]{1}$",$datum)){
ereg( "([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $datum, $regs );
$datum=$regs[3].".".$regs[2].".".$regs[1];
}

return $datum;
}

um.

(wie auch schon in einem anderen Beitrag erwähnt, bin ich nicht der kreative Kopf hinter der Funktion)
Im übrigen funktioniert es in beide Richtungen.
:rolleyes:
 
Zuletzt bearbeitet:
Hi...
naja, ich habe ja ne Java-Applikation, da kann ich ja mit dem PHP-Skript leider nichts anfangen. Ich hätte es zwar auch mit Java damit lösen können, dass ich den String mit dem Datum zerlege, aber ich habe jetzt einfach geschummelt und das Feld in meiner Datenbank zum Typ varchar anstatt Date gemacht *mogel*.

Trotzdem danke für eure Hilfen!

Gruß
Philipp
 

Neue Beiträge

Zurück