Ich habe eine MS Access-Datenbank (unerträglich genug) und kommuniziere mit ihr über PHP (ODBC).
Es gibt ein DateTime-Feld, das ich in meine INSERT-Anweisung aufnehmen muss. Dieses Feld ist in Access NICHT als "Erforderlich" definiert, was bedeutet, dass es tatsächlich NULL-fähig ist und tatsächlich einige der Zeilen in der Access-Datenbank bereits NULL sind.
Das Problem, das ich habe, ist einfach: Wie man NULL durch SQL einfügt? Alle Ergebnisse, die ich online gefunden habe, haben es von etwas wie Visual Basic oder C # angesprochen, während ich SQL über ODBC in PHP verwende.
Ich habe bereits folgendes versucht:
%Vor%(In meiner Abfrage gibt es etwa 30 weitere Spalten.)
Der genaue Fehler, den ich erhalte, ist 'Datentyp stimmt nicht überein', wenn ich '' oder NULL versuche. Die anderen geben einen Parse-Fehler (verständlicherweise) zurück.
Bitte beachten Sie, dass ich das Feld in die INSERT-Anweisung einfügen muss. Das Feld hat einen Standardwert, aber in vielen Fällen haben die Originaldaten, die ich transportiere, einen NULL, der in der Zieldatenbank ebenfalls ein NULL sein muss.
Vielen Dank im Voraus!
Versuchen Sie Folgendes. Es funktioniert für mich:
%Vor%Sie verpacken NULL grundsätzlich in der Select-Abfrage und lassen SQL herausfinden, wie diese in die Einfügung dargestellt wird.
- BEARBEITEN -
Dies sollte auch funktionieren:
%Vor%Aber aus irgendeinem Grund ist es nicht mit meiner Standardinstallation.
Als ich anfing, wechselte ich meine DB von ANSI-89 zu ANSI-92, und die VALUES-Methode begann zu arbeiten. Ich habe es wieder auf ANSI-89 umgestellt, und es funktioniert immer noch. Nicht nur das, auf jeder neuen Datenbank, die ich erstelle, funktioniert es jetzt auch. Seltsam ... etwas in der Installation muss geändert werden (und kleben) durch das Hin- und Herschalten, das ist nicht nur ANSI-89/92. Dies scheint der Grund zu sein, warum wir unterschiedliche Ergebnisse erzielten.
Sie können die Datenbank wechseln, indem Sie zu Office Logo -> Zugriffsoptionen -> OBJEKTDESIGNER -> QUERY DESIGN gehen. Ändern Sie die SQL Server-kompatible Syntax (ANSI 92) - und aktivieren Sie "Diese Datenbank".
Ok, sehr merkwürdig.
Was sind die Bibliotheken, die Sie verwenden, um mit ODBC zu kommunizieren?
Könnte es ein Problem mit der Syntax für NULL-Werte geben, wie sie von der Bibliothek interpretiert wird?
Sehen Sie, ob diese Seite hilft.
Hinweis: Ich habe nicht mit PHP gearbeitet.
Tags und Links php odbc ms-access ms-access-2007