PHP Access Problem



  • Hallo liebes Board,

    Folgender Code

    <?php
    $connection_id= odbc_connect("testdb", "","");
    $query = 'INSERT INTO Adressen (Zähler, KongrNr, Anrede, Vorname, Nachname, JuniorJa, Adresse, PLZ, Land, Ort, kn, Tel, Handy, Fax, Emailadresse, Briefanr, Begleitung1, Begleitung2, Begleitung3, Begleitung4, Begleitung5, Begleitung6, nr1b, nr2b, nr3b, nr4b, nr5b, nr6b, Wettbewerb, Werbung, WerbungPreis, Händler, Standgröße, Ausflug, Ballkarten, ZusatzkAusflug, ZusatzBallkarten, Kongressgebür, BezDatum, KongressgebKind, Galkartan, ZusatzGalakarten, Info, StandPreis, ZusatzGalakartPreis, ZusatzkAusflugPreis, ZusatzBallkartenPreis, Begleitung1Preis, Begleitung2Preis, Begleitung3Preis, Begleitung4Preis, Begleitung5Preis, Begleitung6Preis, BezahlterBetrag, Club, Tageskarte, TageskartePreis, Präsident, Gesamt, Offen, Korespondenz erledigt, Link, Hotel, Zimmer, Datum_von, Datum_bis, Datum) VALUES ("1", "1", "a", "a", "a", "Ja", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a", "a")';
    
    $result=odbc_exec($connection_id, $query);
    ?>
    

    Führt zu:

    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement., SQL state 37000 in SQLExecDirect in C:\xampp\htdocs\mra\dblogin.php on line 7

    Habe schon alles durchgecheckt.
    Die Bezeichnungsnamen sind korrekt! Alle Werte sind Text!
    Die Verbindung von PHP zu Access ist auch eingerichtet und funktioniert. (Ein select auf die Datenbank funktioniert auch)

    Hoffe jemand kann weiter helefn

    THX!!!!



  • normalformen sind erstmal thema.

    -> Datenbanktheorie
    http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)



  • oh weia, dazu noch 67 spalten zu 68 einträgen... und darüber hinaus noch ein leerzeichen in spaltennamen.
    drollig.



  • hast du es schon manuell probiert?



  • Das Datenbankdesign ist katastrophal. Du solltest deine Zeit nicht damit verschwenden, den Fehler zu suchen, sondern das ganze komplett neu aufzubauen.



  • O M G



  • gfhfgh schrieb:

    Das Datenbankdesign ist katastrophal. Du solltest deine Zeit nicht damit verschwenden, den Fehler zu suchen, sondern das ganze komplett neu aufzubauen.

    1. Nicht meine DB! Sondern die von nem Kollegen, welche ich reparieren soll. Dass das DB Design die katastrophe ist, ist mir auch klar - werd ja selber blind dadurch

    2. Bezüglich dem Leerzeichen als Spaltendefinition hab die Spaltendefinitionen auch schon alle unter " gestellt. => selbes ergebnis.

    Des weiteren habe ich eine "Test-Tabelle" erstellt.
    ta_test
    sName (text)
    nID (AI, PK, NN)

    Und folgenden Befehl gesetzt.

    INSERT INTO ta_test (sName) VALUES("test")

    => Fehler!
    Irgendwas wie (bin im Moment nicht zu Hause und kann den Fehler nicht nachschauen) sinnhaftig: Spalten müssen übereinstimmen. 1 Feld erwartet.

    Grüße



  • Hallo,

    sollten MSSQL(Access)-Querys nicht ungefähr so aussehen:
    INSERT INTO ta_test ([sName]) VALUES ("test");

    😕

    VlG



  • Hm

    $query = 'INSERT INTO ta_test ([sInput]) VALUES("test")';
    

    Führt zu:

    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][ODBC Microsoft Access Driver] 1 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben., SQL state 07001 in SQLExecDirect in C:\xampp\htdocs\access\insert.php on line 4



  • Hallo,

    das hat aber nix mit dem Query sondern eher mit der Execute-Funktion zu tun! Schau mal welche Parameter da erwartet werden und welche du angibst.

    //Edit: Schau außerdem mal ob deine connection_id befüllt ist. odcb_connect() gibt im Fehlerfall 0 bzw. false zurück. Als erster Parameter in odcb_connect wird auch nicht die DB sondern der DSN erwartet. Und das zur DB kein Benutzer existiert kann ich mir auch nicht vorstellen?!

    VlG



  • Der Fehler war:

    INSERT INTO ta_test (sName) VALUES('test')

    Man muss das unter ' machen!
    " gehen nicht....

    Ist wohl Access spezifisch.


Anmelden zum Antworten