Moin!
Die Grundsätzliche Idee ist folgende (Bsp):
$string = dbCreate('table', 'value=asdf, type=1', 'number');
$string['success'] => [1/0 (Erfolg)]
$string['value'] => [angeforderter Wert (hier: number) / MySQL-Error-String]
Die Funktion erstellt einen neuen Datensatz in der angegebenen Tabelle mit den angegebenen Werten und gibt dann die angeforderten Werte zurück.
Ich halte es für keine gute Idee, solch eine Funktion zur Verfügung zu stellen.
Augenscheinlich bastelst du da ja irgendeinen DB-Access-Layer. Dann baust du mit Sicherheit auch eine Funktion ein, die einfach nur lesen kann.
Das Problem ist, dass deine jetzt geplante Funktion mindestens zwei Querys an die Datenbank senden wird: Einmal ein INSERT, und dann ein SELECT. Da die Benennung der ID-Spalte nicht bekannt ist, werden außerdem noch weitere Querys zur Ermittlung des Namens benötigt.
Diese Vorgehensweise erscheint machbar, wenn die Funktion einmal aufgerufen wird. Aber Datenbanken sind multitaskingfähig, also ist die Frage, wie dieser Ablauf reagiert, wenn parallel zu dieser Funktion noch andere Querys in den Daten herumwerkeln. Stichwort: Transaktionen!
Um dieses Problem mußt du dir zwingend Gedanken machen, wenn du eine Funktion baust, die vorgibt, garantiert korrekte Daten zu liefern. Programmierer vergessen sowas sonst nämlich, und Race-Conditions sind mit die ekligsten Quellen für Bugs und Exploits, die man sich denken kann.
Mit anderen Worten: Warum muß diese Funktion eierlegende Wollmilchsau spielen? Warum kann sie nicht einfach die erzeugte ID zurückgeben, mit der der Programmierer dann (weil er sein DB-Schema kennt) sofort einen SELECT nachschiebt.
Wobei ich mich sowieso wundere, was dabei spannendes herauskommen soll! Entweder die Information ist im INSERT explizit genannt worden - dann wird die Antwort hoffentlich identisch sein. Oder die Information ist nicht im INSERT enthalten - dann wird der im DB-Schema definierte Default-Wert zurückkommen. Aber beide Informationen sind dem Programmierer bekannt, da er das DB-Schema kennt, was er verwendet und auf das er zugreift.
Zusammengefaßt: Ich halte deine Funktion für potentiell gefährlich und von der Funktion her für überflüssig.
- Sven Rautenberg
--
"Love your nation - respect the others."