mixmastertobsi: MYSQL MYSQLI

Hallo Zusammen,

eine Frage, warum soll die Funktion MYSQL eingestellt werden und wo sind die Vorteile von MYSQLI.

Wie stelle ich am besten auf MYSQLI um, bei der Vielzahl an Verbindungen.

DANKE!

Tobias

  1. Mahlzeit,

    eine Frage, warum soll die Funktion MYSQL eingestellt werden

    Weil der Entwickler das so will.

    und wo sind die Vorteile von MYSQLI.

    Zuerstmal OOP.

    Wie stelle ich am besten auf MYSQLI um, bei der Vielzahl an Verbindungen.

    Ohne deinen Code zu kennen: keine Ahnung.
    Aber wenn du umstellen willst, schau dir PDO auch mal an.

    --
    42
    1. Hallo,

      kann man "zweigleisig" fahren, bis man umgestellt hat?

      Welche Vorteile hat PDO?

      Wie lange wird es noch mysql geben?

      Danke!

      1. Hi,

        kann man "zweigleisig" fahren, bis man umgestellt hat?

        Nicht zu empfehlen, nein.
        Auf keinen Fall innerhalb eines Scriptes (welches sich ja auch aus vielen include-Dateien zusammensetzen kann) – denn dann müsstest du immer zwei Verbindungen aufbauen, eine mit mysql und eine mit mysqli. Kommt dann noch z.B. der unglückliche Fall dazu, dass du einen Teil schon umgestellt hast, einen anderen aber noch nicht – und im einen Teil ein INSERT ausgeführt wird, und du im anderen die zuletzt eingefügte auto_increment-ID abfragen willst, dann fällst du damit schön auf die Nase – weil diese ID nur innerhalb der Verbindung abfragbar ist.

        Und auch außerhalb eines Scriptes, aber innerhalb eines Projektes ist das vermutlich nicht besonders glücklich.

        Welche Vorteile hat PDO?

        Dass du den DB-Treiber „unten drunter“ austauschen kannst, ohne deinen Code zu ändern. (Zumindest in der Theorie, sobald du DB-spezifische Sachen wie z.B. LIMIT bei MySQL benutzt, kann man das natürlich nicht einfach so gegen ein anderes DBMS im Hintergrund austauschen. Aber zumindest der Wechsel von der mysql- zur mysqli-Erweiterung hätte dich mit PDO überhaupt nicht gekratzt.)

        Wie lange wird es noch mysql geben?

        Weiß nicht, ob das schon definitiv entschieden ist, wann es endgültig aus PHP entfernt wird. Ab PHP 5.5.0 ist es auf jeden Fall deprecated.

        MfG ChrisB

        --
        Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
        1. Welche Vorteile hat PDO?

          Dass du den DB-Treiber „unten drunter“ austauschen kannst, ohne deinen Code zu ändern. (Zumindest in der Theorie, sobald du DB-spezifische Sachen wie z.B. LIMIT bei MySQL benutzt, kann man das natürlich nicht einfach so gegen ein anderes DBMS im Hintergrund austauschen. Aber zumindest der Wechsel von der mysql- zur mysqli-Erweiterung hätte dich mit PDO überhaupt nicht gekratzt.)

          Vollkommen richtig ausgedrückt. Allerdings würde ich hier noch erwähnen, dass man mit Hilfe von PDO die Gefahr durch SQL Injections stark einschränkt und man selbst nicht mehr die Querys maskieren muss.
          Jeder hat da wahrscheinlich je nach Anwendung unterschiedliche Vorlieben, aber sichere Programmierung ist eigentlich immer wichtig. Vor allem wenn man sie so schnell und einfach einsetzen kann wie mit PDO.

          Hinzu kommt noch, dass man sich PDO relativ schnell aneignen kann.

          Viele Grüße,
          Time

          1. Tach!

            Aber zumindest der Wechsel von der mysql- zur mysqli-Erweiterung hätte dich mit PDO überhaupt nicht gekratzt.)

            Ja, aber aus dem Grunde, dass man da nur "mysql" zur Auswahl hat und PDO von selbst intern das verwendet, was es für richtig hält.

            Allerdings würde ich hier noch erwähnen, dass man mit Hilfe von PDO die Gefahr durch SQL Injections stark einschränkt und man selbst nicht mehr die Querys maskieren muss.

            Das stimmt so aber nur, wenn man Prepared Statements verwendet. Mit PDO hat man auch die Möglichkeit, auf herkömmliche Art mit den eingebetteten Werten Querys zu erstellen. Und Prepared Statements bekommt man auch mit mysqli hin - ebenso wie die Einbettungsmethode.

            Jeder hat da wahrscheinlich je nach Anwendung unterschiedliche Vorlieben, aber sichere Programmierung ist eigentlich immer wichtig. Vor allem wenn man sie so schnell und einfach einsetzen kann wie mit PDO.

            In punkto Anwenderfreundlichkeit hat PDO jedoch gegenüber mysqli die Nase vorn, da geht einiges einfacher, was bei mysqli unnötig umständlich gelöst ist. Damit meine ich zum Beispiel, dass bei Prepared Statements mit Referenzen auf Variablen gearbeitet werden muss. Bei PDO kann man die Werte in allen möglichen Formen übergeben.

            dedlfix.

      2. Mahlzeit,

        kann man "zweigleisig" fahren, bis man umgestellt hat?

        Würdest du dir wirklich diese Arbeit machen? Wärend einer Umstellung ist das noch Ok, aber wenn umgestellt, dann entgültig.

        Wie lange wird es noch mysql geben?

        Ich hab mal was gelesen, dass es bei PHP6 wegfällt, aber sowas ändert sich ja bisweilen ;)
        Nachlesen, wo solche Infos aus erster Hand kommen, soll angeblich helfen, aktuell zu bleiben.

        --
        42
  2. Tach!

    eine Frage, warum soll die Funktion MYSQL eingestellt werden und wo sind die Vorteile von MYSQLI.

    Die mysql-Funktionen sind veraltet und können vieles nicht, was mysqli kann. Das braucht man zwar in 08/15-Anwendungen nicht, das macht es aber für die Entwickler nicht einfacher, wenn sie zwei Systeme pflegen müssen. Ob die neuen/anderen Eigenschaften von Vorteil sind, kommt auf deine Anwendungen an. Fakt ist jedenfalls, dass du langfristig nicht mehr mit den mysql_*()-Funktionen arbeiten kannst.

    Wie stelle ich am besten auf MYSQLI um, bei der Vielzahl an Verbindungen.

    Es gibt im PHP-Handbuch eine kurze Übersicht zu den Unterschieden. Du musst immer ganze Abfragen komplett umstellen, mixen geht nicht. Also alles vom Verbindungsaufbau über Query bis zum Fetchen muss mit einer API erledigt werde. Das bedeutet meist, dass die gesamte Anwendung komplett umgestellt werden muss.

    dedlfix.