Probleme mit SQL-Syntax bei SQLite

Hallo zusammen,

ich schreibe ja zurzeit an aeiner Logger-Klasse. Dabei soll es auch möglich sein, die Daten statt in Mysql in einer SQLite DB abzulegen. Auch für den Fall eines Ausfalls auf Mysql Ebene.

Allerdings hatte ich nun beim anlegen der Tabelle einige Probleme mit der SQLite SQL-Syntax, die mich stutzig machen.

Ich hatte eine ähnliche wie folgende Query zum erstellen der Tabelle:

CREATE TABLE `log` (
`id` integer primary key,
`ip`,
`sql-query`,
`host`,
`timestamp`
);

Nun bekam ich folgenden Fehler:

Dies wundert mich extrem. Welches Zeichen soll ich dann verwenden, um die Spaltennamen in Anführungszeichen zu setzen?
Denn ohne hat er dann über den Bindestrich in ‘sql-query’ gemeckert.

Was mich viel mehr erschreckt hat: Das selbe wie bei dem ‘`’ passiert auch bei ‘’. Wie dann vor SQL-Injection schützen?

Kann mich da mal bitte wer aufklären :smiley:

normales SQL definiert eigentlich kein Zeichen um Spaltennamen zu escapen (weil normal nicht nötig), also probiers bitte mal ohne :wink:

ja, in namenspalten ist das nicht nötig (ich hatte es dann beim - versucht :wink:) aber bei werten durchaus (SQL-Injektion). Und was ist mit den ‘`’??

die ’ ’ sollten Funktionieren…ansonsten probiers mal mit " "

nein, du hast mich falsch verstanden. das zeichen ` für die spalten und tabellennamen kennt er nicht. ebenso den backslash. das zeichen ’ funktioniert.

EDIT:
Ich habe jetzt jedoch noch ein anderes Problem.
Beim schreiben in eine Datei schreibt er natürlich in den Ordner des ausführungsortes, nicht dort, wo die datei mit der Klassendefinition liegt. was kann ich tun, um immer ins selbe Verzeichniss, dort wo auch die Klassendefinition liegt, zu schreiben?

EDIT:
Ich habe Probleme mit einem RegEx für eine IP:

ereg("$[0-9]{1,3}(\.[0-9]{1,3}){0,3}^", $ip)

Was ist falsch? Ehrlich gesagt bin ich mir auch nicht ganz sicher welches Format IPs einhalten…

Die ereg-Funktionen sollte man fuer regulaere Ausdruecke nicht mehr benutzen, sondern die preg-Funktionen stattdessen.

Und $ steht fuer das Stringende, ^ fuer den Anfang - haeltst du die in der Reihenfolge eingesetzt fuer sonderlich sinnvoll?

Recht hast du… da hab ich wohl was gründlich vertauscht :ps:
Danke.
Hat noch jemand hilfe für mich, bzgl. des Dateiproblems? Das ist zur Zeit am wichtigsten.

Datei: file_write_contents(basedir(FILE)."/datei.txt", $content)

Und zum `: Das brauchst du nicht!

Neee. basedir() gibt es gar nicht. Zumindest nicht im Manual und in meiner php version.
zudem würde eine solche Funktion in meinem Fall aus dem Pfad:

D:\Programme\xampp\htdocs\new_jw-lighting\logclass

vermutlich ‚Programme‘ herausholen, obwohl ich den Pfad zu Logclass brauche.
Das Problem ist, das die Datei immer aus anderen Verzeichnissen ausgeführt (includet) wird.

Und wie escape ich? Wäre wichtig, da ich auch SQL-Abfragen loggen will :ps:
:wink:

Arg… basename und dirname, so wars :ps:

at2.php.net/manual/de/function.dirname.php

ja, mittlerweile habe ich auch die Lösung. da hätte ich echt selbst drauff kommen müssen:

$file = dirname(__FILE__) . "/" . $filename . ".log";