MySQLi zu MySQL
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ansatz
aufwand
befehlen
datenbanktreiber
empfohlen
fragen
fragezeichen
funktion
grerem aufwand
klasse
kollege
lens
package
selbstgeschriebene wrapper
sicherheit
statement
untersttzung
verfgbarkeit
version
vielen dank
-
Hallo LimaGemeinde,
ich hab mal wieder ein Problem, ein ärgerliches dazu.
Ich programmiere zusammen mit einem Kollegen ein CMS System.
Uns wurde mehrmals empfohlen das man MySQLi zu benutzen, der Sicherheit wegen. Gesagt getan.
Nun haben wir das Problem mit einem Kunden das er einen recht schlechten Webspace gekauft hat der kein MySQLi unterstützt.
Meine Frage wäre jetzt ob jemand eine Idee hat wie man ohne viel Aufwand die MySQLi prepared Statemants zu normalen MySQL Befehlen umbauen kann, ohen alles wieder umzuporgrammieren.
Wir würden natürlich gerne, wenn MySQLi verfügbar ist, dieses auch benutzen. Am besten wäre es eine Klasse zu haben die man bei bedarf hinzuzieht die automatisch die MySQLi Befehle zu normalen MySQL Befehlen umbaut. Hat da jemand eine Idee?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hier hatte jemand wohl das gleiche Problem. Vielleicht hilft dir der Ansatz ja
http://www.sitepoint.com/forums/showthread.php?t=319791 -
Schau dir mal diese Seite an http://www.drweb.de/programmierung/mysqli.shtml und folge dann dem Link zu der mysql2i-Klasse (http://www.coggeshall.org/oss/mysql2i/).
Das behandelt zwar genau den umgekehrten Fall, aber ich hab mir die Klasse mal angesehen und ich denke es sollte mit ein bisschen Arbeit möglich sein die Klasse so umzuschreiben, dass sie für dein Problem funktioniert. Man müsste alle mysql-Funktionen in der Klasse nach mysqli umbenennen und alle ursprünglichen mysqli-Funktionen nach mysql. Vll stell ich mir das jetzt auch zu einfach vor, aber wie gesagt, ich denke es könnte gehen. -
Meine Frage wäre jetzt ob jemand eine Idee hat wie man ohne viel Aufwand die MySQLi prepared Statemants zu normalen MySQL Befehlen umbauen kann, ohen alles wieder umzuporgrammieren.
Wir würden natürlich gerne, wenn MySQLi verfügbar ist, dieses auch benutzen. Am besten wäre es eine Klasse zu haben die man bei bedarf hinzuzieht die automatisch die MySQLi Befehle zu normalen MySQL Befehlen umbaut. Hat da jemand eine Idee?
Wenn der aktuelle Code direkt mit den MySQLi-Funktionen von PHP arbeitet, wird das sehr kompliziert. Für die objektorientierte Variante hätte eine selbstgeschriebene Wrapper-Klasse helfen können, die alle benötigten ..._stmt_-Methoden aufnimmt.
Das Problem dürften die Prepared-Statement-Funktionen darstellen -- speziell mysqli_stmt_prepare(). Man kann das zwar mit String-Ersetzungsfunktionen wie preg_replace() nachbilden. Aber echte prepared Statements beinhalten AFAIK das Interpretieren von SQL-Code, denn nicht jedes Fragezeichen im Query muss ersetzt werden. Und sowas kannst du nur mit größerem Aufwand nachbauen. Außerdem wäre sowas in der Scriptausführung zeitaufwändig (Zumindest der Ansatz, den ich mir so vorstelle).
Das Problem mit den unterschiedlichen verfügbaren Datenbank-System-Treibern und deren Verfügbarkeit unter PHP löst man am Besten von vorherein, indem man eine Datenbank-Abstraktionsklasse schreibt oder eine fertige verwendet. Die bekanntesten dürften AdoDB und PEAR_DB sein. Die schnellste (mir bekannte) ist AdoDB Lite. Und alle haben auch eigene Methoden, um mit prepared Statements umzugehen, auch wenn der drunterliegende Datenbanktreiber das gar nicht unterstützt:
http://de.wikipedia.org/wiki/ADOdb_Lite
http://phplens.com/lens/adodb/docs-adodb.htm
http://pear.php.net/package/DB -
Vielen Dank erstmal!
also die MySQL2MySQLi Klasse haben wir auch schon entdeckt aber das ist zu aufwendig das umzuschreiben.
Die Problematik die alopex erwähnte ist uns eben auch gekommen, so haben uns jetzt darauf geeinigt das wir das erstmal in unserem code selbst das ganz umschreiben, das wir je nach Unterstützung MySQL oder MySQLi nutzen.
Aber die fertigen Klassen (besonders ADOdb_Lite) werden wir mal ins auge fassen um bei der nächsten version darauf umzusteigen. PEAR hat auch wieder das Proble mit dem vorhanden sein und den verschiedenen Versionen. Wir können uns leider oftmals die Server nicht selbst aussuchen...
nochmal DANKE!!!
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage