Björn Lindner: INSERT INTO in eine ODBC DB

Hallöle,

Leider funzt

$schreib="INSERT INTO Vereine(VereinsID, Vereinsbezeichnung, Strasse, PLZ, Ort, Aussenplaetze, Hallenplaetze) VALUES ("$Meldenummer", "$Verein", "$Strasse", "$PLZ", "$Ort", "$Aussenplaetze", "$Hallenplaetze")";
odbc_exec($verbindung,$schreib);

nicht.
Ich erhalte folgende Fehlermeldung:

5 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben., SQL state 07001 in SQLExecDirect in ...

Meldenummer, Aussenplaetze und Hallenplaetze sind Zahlen, der Rest Text.
Es sind auch alle Felder der Tabelle.
Woran könnte es noch liegen?

MFG Björn

  1. Hallöle,

    Leider funzt

    $schreib="INSERT INTO Vereine(VereinsID, Vereinsbezeichnung, Strasse, PLZ, Ort, Aussenplaetze, Hallenplaetze) VALUES ("$Meldenummer", "$Verein", "$Strasse", "$PLZ", "$Ort", "$Aussenplaetze", "$Hallenplaetze")";
    odbc_exec($verbindung,$schreib);

    nicht.
    Ich erhalte folgende Fehlermeldung:

    5 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben., SQL state 07001 in SQLExecDirect in ...

    Meldenummer, Aussenplaetze und Hallenplaetze sind Zahlen, der Rest Text.
    Es sind auch alle Felder der Tabelle.
    Woran könnte es noch liegen?

    MFG Björn

    hallo,

    versuchs einfach mit
    $schreib="INSERT INTO Vereine values (VereinsID, Vereinsbezeichnung, Strasse, PLZ, Ort, Aussenplaetze, Hallenplaetze) VALUES ("$Meldenummer", "$Verein", "$Strasse", "$PLZ", "$Ort", "$Aussenplaetze", "$Hallenplaetze")";

    dann ist noch wesentlich, ob die datenbank einfache oder doppelte Anführungszeichen als Quotingzeichen verwendet, und ob in den Texten ein Quotingzeichen enthalten ist.

    aber da siehst Du wohl selber nach

    Grüße
    Klaus

    1. Hi,

      also ich habe das so gemacht, wie Du es geschrieben hast, ich habe es so gemacht wie unten, und ich habe nach der Klammer nach Hallenplaetze ein ; gesetzt.

      $schreib="INSERT INTO Vereine values(VereinsID, Vereinsbezeichnung, Strasse, PLZ, Ort, Aussenplaetze, Hallenplaetze) VALUES ($Meldenummer, '$Verein', '$Strasse', '$PLZ', '$Ort', $Aussenplaetze, $Hallenplaetze)";
      odbc_exec($verbindung,$schreib);

      Ich bekomme jetzt immer die Meldung
      Fehlendes Semikolon (;) am Ende der SQL-Anweisung

      Der Zugriff auf die DB funzt über
      $Save1sql ="SELECT Ansprechpartner.AnsprechID FROM Ansprechpartner ORDER BY Ansprechpartner.AnsprechID;";
      $Save1 = odbc_exec($verbindung,$Save1sql);

      ohne Probleme.
      Was sind Quotingzeichen? *ganzdummfrag*

      MFG Björn

      1. hallo,

        $schreib="INSERT INTO Vereine values(VereinsID, Vereinsbezeichnung, Strasse, PLZ, Ort, Aussenplaetze, Hallenplaetze) VALUES ($Meldenummer, '$Verein', '$Strasse', '$PLZ', '$Ort', $Aussenplaetze, $Hallenplaetze)";
        odbc_exec($verbindung,$schreib);

        Ich bekomme jetzt immer die Meldung
        Fehlendes Semikolon (;) am Ende der SQL-Anweisung

        dann mach eins dazu also
        $schreib="INSERT INTO Vereine values(VereinsID, Vereinsbezeichnung, Strasse, PLZ, Ort, Aussenplaetze, Hallenplaetze) VALUES ($Meldenummer, '$Verein',
        '$Strasse', '$PLZ', '$Ort', $Aussenplaetze, $Hallenplaetze);";
                                                                                           ^
                                                                                          
        achte darauf ---------------------------------------------------------------/
        so machst Du des ja auch bei der select-Anweisung.

        Was sind Quotingzeichen? *ganzdummfrag*

        *akademischnichtkorrektantwort*:
        Quotingzeichen sind Anführungszeichen. (eigentlich ist Qoutingzeichen ein absolut miserables Wort, wenn ich so nachdenke)
        also zum beispiel:
        $schreib = "Anweisung" --> das " ist jetzt das Qouting-Zeichen
        oder
        $schreib = 'Anweisung' --> das ' ist jetzt das Qouting-Zeichen

        Das Problem ist immer, wenn im Text auch so ein Zeichen vorkommt.
        wenn Du z.B den Text "There's More Than One Way" mit doppelten Anführungszeichen versiehst, ist es kein Problem.
        wie sieht's aus mit 'wie sieht's aus'?
        hier würde das Programm nur 'wie sieht' als Text verstehen, den Rest irgendwie interpretieren und Dich im günstigsten Falle mit Fehlermeldungen anspucken.
        dann gehts ans Maskieren, d.h. Du muß das so schreiben, daß diese Zeichen irgendwie vom Programm ignoriert werden.
        einige Programmiersprachen machens mit dem Backslash, andere haben so abenteuerliche Konstrukte wie " das ist ein """TEST""" mit Anführungszeichen".
        und Datenbanken spinnen sowieso.

        naja, was solls, ich hör auf, hab ein bißchen den Faden verloren.
        Grüße
        Klaus