PHP Umstellung mysql_* zu mysqli_* für PHP Update auf 7.x

Muenzenwert

New Member
Hallo,
ich möchte meine PHP Version umstellen und habe mich hier und im Internet ein wenig umgesehen.
Vorallem mysql_ Befehle werden nicht mehr laufen, hier möchte ich mit der Umstellung anfangen.

Da ich die Verbindungsinformation der DB nicht über alle Funktionen mitgezogen habe müsste ich nun alle Funktionen und Funktionsaufrufe entsprechend ändern. (Ich habe 1 DB und 1 Server, dies wird sich auch in Zukunft nicht ändern)
Viele Änderungen = viele Fehler = hoher Zeitaufwand ;)

Im Internet fand ich diverse Wrapper und auch Include Files die die mysql_ Befehle mit eigenen Methoden überschreiben und zu mysqli_ konvertieren. Das würde ich aber lieber nicht machen..

Problem der Umstellung
Eine Funktion: getParameter wird z.B. 1600 über alle Scripte aufgerufen
getParameter holt Form Parameter, prüft diese auf verbotene IPs / Domains / Code Injection / usw. und schreibt einen Eintrag in eine Tabelle was wo wie versucht wurde. (Administration / Interfaces / usw. braucht man Einiges im Projekt)
Die Funktion selbst ist schnell geändert aber die Aufrufe zu ändern die Datenbankverbindung beim Funktionsaufruf verfügbar zu haben ist aufwendig und fehleranfällig..

Meine Idee ist mit Replace mysql_* in db_* umzubenennen und entsprechende Funktionen zu erstellen z.B. db_query()
Zentral ist es weniger ein Problem die Datenbankverbindung zu haben, global oder aktuelle Verbindung aus DB holen..


Code:
//DB Verbindung (ohne Fehlerauswertung)
$dbMain = mysqli_connect( "localhost", "user", "pass", "db" );

//Funktion db_query (als Beispiel)
function db_query( $sql, $db_link = NULL ) {
    global $dbMain;
    //$dbMain = mysql_resolve_link( $db_link);
    $result    = mysqli_query( $dbMain, $sql );
    return $result;
}

//Funktionsaufruf
$result    = db_query( "select * from testTable" );
Funktionieren tut es - aber handle ich mir auf Dauer damit mehr Probleme ein oder ist das ein Weg den ich machen kann?

Danke
 

d4f

Müder Benutzer
Es gibt schon Leute die diese Arbeit für dich gemacht habe, wie im anderen Thread verlinkt schau dir das mal an:

Es emuliert alle mysql_ Funktionen, dein Code selber muss also nicht angepasst werden. In der Annahme dass es zumindest eine gemeinsame config.php gibt kann der Start-Code darin untergebracht werden. Ich kann dir nur nicht sagen ob die Klasse auch versucht zu laden falls mysql_ Funktionen verfügbar sind. In dem Fall solltest du ein "if(!function_exists('mysql_connect')) herumsetzen.

Man sollte die prozedurale (direkte Funktionsaufrufe) Variante im Stil von "mysqli_connect" meiden wenn man Code schreibt, sondern die Mysqli-Klasse ( new Mysqli(...) ) benutzen.
 

Muenzenwert

New Member
@d4f
Danke für den Link
Ich habe 4-5 solche Tools gefunden, aktuell gefällt mir eigener kleiner Wrapper besser...

Im Moment verwende ich nur 6 mysql_ Befehle, ist also recht überschaubar und schnell gemacht..
Alle Programme laufen über ein ProgInit was dann auch die DB Verbindung aufruft.. das wäre kein Probem..
 
Top