Hello,
Und was machen wir bei Dezimaltypen, Daten, usw?
Leider muss man sich für sämtliche Fälle - mit Ausnahme von Strings - ohnehin eigene Funktionen basteln - leider gibt's afaik kein
mysql_sanitize(mixed $var, [, string $type ])
wo man dann bequem folgendes tun kann:
mysql_sanitize('127,119', 'DECIMAL')
So ein mysql_autoescape() hatte ich schon mal angefangen. Dazu benötigt man dann in erster Linie die Tabellendefinition. Die kann man sich ja besorgen. Und dann kann man mit der Funktion oder Methode den vorbereiteten Datansatz zieltypgerecht escapen lassen.
Bei Fehler, also wenn sich ein Feldinhalt des externen Records nicht in den Spaltentyp der Tabelle portieren lässt, gibt es dieses Feld in einem Fehler-Record (Array) zurück.
Und dann sind wir bei der Last, die das erzeugt...
Und schon macht es keinen Spaß mehr. Wenn man bei jedem Request (eigentlich ja sogar bei jedem Query) erst die Tabellendefinition einlesen und auswerten würde, und das dann auch noch, wenn mehrere Tabellen betroffen sind, dann kostet das. Also müsste man diese Abfrage irgendwie cachen und nur feststellen, ob sie noch gültig ist. Es wäre zwar ungewöhnlich, dass Datenmodelle während des laufenden Betriebs geändert werden, aber nicht unmöglich...
Aber Du hast mich da auf eine Idee für die Basistests gebracht. Die Filterfunktionen geben ja einiges her http://de3.php.net/manual/de/book.filter.php. Das hatte ich noch mit Stringfunktionen und Regular Expressions gelöst.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg