php4ler: mysqli <-> mysql

Hi,

habe mir eine recht umfangreiche Anwendung für php5 geschrieben und habe ehrlichgesagt nicht wirklich Lust nun doch wieder auf die un-improved-mysql Schnittstelle von php4 zurück umzusteigen weil ich für ein Projekt, in dem diese Anwendung implementiert wird, nur php4 zur Verfügung steht :(
Deshalb frage ich Euch um Rat.
Soweit ich mich entsinne, gibt es ein OpenSource Projekt, dass eine mysqli Klasse für php4-Menschen bereitstellt, welche einfach eingebunden wird und laufen müsste. Ist es nun sinnvoll, diese einzusetzen oder sollte ich doch lieber alles umschreiben, dass es mit mysql (ohne i) auskommt? Wenn es Geschwindigkeits-/Performanceeinbußen mit sich bringt, würde ich das natürlich machen; wenn jedoch das mysqli zum includen empfehlenswert ist oder besser noch gleichwertig mit dem mysqli von PHP5, so würde ich das dankend annehmen.
Ist es gleich/schlechter/besser oder was würdet ihr an meiner Stelle tun?

Gruß,
Tobi

  1. Ich grüsse den Cosmos,

    Ist es nun sinnvoll, diese einzusetzen oder sollte ich doch lieber alles umschreiben, dass es mit mysql (ohne i) auskommt?

    Wenn du dein Projekt gut geplant hättest, könntest du das Problem mit dem einfachen Austausch einer einzelnen Datei lösen.

    Wenn es Geschwindigkeits-/Performanceeinbußen mit sich bringt, würde ich das natürlich machen; wenn jedoch das mysqli zum includen empfehlenswert ist oder besser noch gleichwertig mit dem mysqli von PHP5, so würde ich das dankend annehmen.

    Ein Wrapper benötigt grundsätzlich mehr Zeit als direkter Code. Doppeltes bearbeitet braucht nunmal Zeit.

    Ist es gleich/schlechter/besser oder was würdet ihr an meiner Stelle tun?

    Und das Konzept nachdenken. Wenn das Projekt portabel sein soll, müssem entsprechene Funktionen einfach auszutauschen sein.
    Ansonsten würde ich einen Zielrechner wählen, der PHP5 hat, da es bei meinfachen Umschreiben zu Problemen kommen kann, die du jettz noch nicht siehst.

    Möge das "Self" mit euch sein

    --
    Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
    ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
    1. Und das Konzept nachdenken. Wenn das Projekt portabel sein soll, müssem entsprechene Funktionen einfach auszutauschen sein.
      Ansonsten würde ich einen Zielrechner wählen, der PHP5 hat, da es bei meinfachen Umschreiben zu Problemen kommen kann, die du jettz noch nicht siehst.

      Ein PHP5-Server ist in dem Fall nicht möglich; die Entscheidung liegt auch nicht bei mir...
      Es ist tatsächlich so, dass die Mysql Anfragen alle in einer Datei stecken, in einer Klasse, die überarbeitet werden müsste.
      Bevor ich das nun tun werde noch diese Frage:
      Ist mysqli wirklich besser und schneller oder überzeugt es "nur" durch die hinzugefügten Funktionen, die häufige Routinen erleichtern oder schon bieten... ganz ohne Self...?
      Leider liest man in jedem Blog andere Meinungen dazu. Der eine mag mysqli, der andere nimmt es einfach so, und wieder ein anderer hält es für das nonplusultra mit i-Tüpfelchen.
      Habe mich darin eingearbeitet und habe es nur aus diesem Grund verwendet. Von den multiqueries oder anderen Verbesserungen habe ich keinen Nutzen gezogen.

      1. Moin!

        Ein PHP5-Server ist in dem Fall nicht möglich; die Entscheidung liegt auch nicht bei mir...

        PHP 4 wird zum Jahresende 2007, also in genau 5 Monaten, nicht mehr weiterentwickelt, ab dem 8.8.2008 wird es außerdem keinerlei Sicherheitspatches für existierende Versionen mehr geben.

        Es wäre absolut kurzsichtig, heutzutage eine neue Applikation NICHT für Version 5 auszulegen. Man MUSS wechseln. Je eher die Umstellung angegangen wird, desto besser.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
      2. Ich grüsse den Cosmos,

        Ein PHP5-Server ist in dem Fall nicht möglich; die Entscheidung liegt auch nicht bei mir...

        Dann hast du bei deiner beratenden Tätigkeit, die im Vorfeld erfolgt, versagt. Wenn man dem Kunden nicht klarmachen kann, das der EInsatz von PHP4 in naher Zukunft zu einem Sicherheitsproblem werden kann, sollte man die Beratung anderen überlassen.

        Leider liest man in jedem Blog andere Meinungen dazu. Der eine mag mysqli, der andere nimmt es einfach so, und wieder ein anderer hält es für das nonplusultra mit i-Tüpfelchen.

        Dann stell dir die Frage, wieso du es nutzt. Irgendwas muss dich ja zu der Entscheidung bewogen haben.

        Habe mich darin eingearbeitet und habe es nur aus diesem Grund verwendet. Von den multiqueries oder anderen Verbesserungen habe ich keinen Nutzen gezogen.

        Deine Entscheidung. Ich würde nichts umschreiben, sondern dem Kunden klarmachen, das er viele Vorteile von PHP5 nicht bekommt, dafür aber die Nachteile von PHP4 in Zukunft immer im Schlepptau hat.

        Möge das "Self" mit euch sein

        --
        Fragt ein Atom das andere: Hast du mein Elektron gesehen? Ich bin heute so positiv.
        ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
  2. Hi,

    habe mir eine recht umfangreiche Anwendung für php5 geschrieben und habe ehrlichgesagt nicht wirklich Lust nun doch wieder auf die un-improved-mysql Schnittstelle von php4 zurück umzusteigen weil ich für ein Projekt, in dem diese Anwendung implementiert wird, nur php4 zur Verfügung steht :(

    hatte mal ein ähnliches Problem. Vielleicht hilft dir als Übergangslösung folgender Schnipsel (hab nicht ich geschrieben, weiß aber nicht mehr wo ich den fand)

      
    # (kein mysqli)  
    #-------------  
    $db_name="";  
    $db_ip="";  
    $db_username="";  
    $db_password="";  
      
    # mysqli compatibility  
    if (!function_exists("mysqli_connect")) {  
      function mysqli_connect($host,$user,$password) {  
     global $activedb;  
        $activedb = mysql_connect($host,$user,$password);  
      }  
      function mysqli_select_db(&$activedb,$dbname) {  
        mysql_select_db($dbname,$activedb) or  
        die(mysql_error($activedb));  
      }  
      function mysqli_query(&$activedb,$query) {  
        return mysql_query($query,$activedb);  
      }  
      function mysqli_error(&$resource) {  
       mysql_error($resource);  
      }  
      function mysqli_close(&$activedb) {  
       mysql_close($activedb);  
      }  
      function mysqli_fetch_object(&$resource){  
        return mysql_fetch_object($resource);  
      }  
      function mysqli_fetch_assoc(&$resource){  
        return mysql_fetch_assoc($resource);  
      }  
      function mysqli_fetch_array(&$resource){  
        return mysql_fetch_array($resource);  
      }  
      function mysqli_fetch_row(&$resource){  
        return mysql_fetch_row($resource);  
      }  
      function mysqli_num_rows(&$resource){  
         return mysql_num_rows($resource);  
      }  
      function mysqli_free_result(&$resource){  
         mysql_free_result($resource);  
      }  
      function mysqli_insert_id(&$activedb){  
        return mysql_insert_id();  
      }  
      function mysqli_num_fields(&$result){  
       return mysql_num_fields($result);  
      }  
      function mysqli_field_name(&$result, $j){  
       return mysql_field_name($result, $j);  
      }  
      function mysqli_affected_rows(&$resource){  
       return mysql_affected_rows($resource);  
      }  
    }  
    # db-verbindung herstelln  
    $db=@mysql_connect($db_ip, $db_username, $db_password);  
    mysql_select_db($db_name,$db);  
    
    

    Vielleicht mußt du noch etwas anpassen,

    schöne Grüße

    1. Moin!

      hatte mal ein ähnliches Problem. Vielleicht hilft dir als Übergangslösung folgender Schnipsel (hab nicht ich geschrieben, weiß aber nicht mehr wo ich den fand)

      Der Schnipsel ist ja nett, ignoriert aber leider vollkommen die Tatsache, dass mysqli nicht nur ein funktionales Interface hat, sondern auch ein objektorientieres Interface. Und gerade _das_ ist es, was Spaß macht und Dinge extrem erleichtert.

      Wenn man mysqli nur wegen seiner Neuheit als Funktion aufruft, kann man sich das eigentlich auch schenken und direkt mysql nutzen.

      - Sven Rautenberg

      --
      "Love your nation - respect the others."