Überprüfungsmechanismen für PHP Install Script

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Überprüfungsmechanismen für PHP Install Script

    Hallihallo,
    ich habe für eines meiner Scripte eine Installationsroutine geschrieben, die die Struktur zweier Tabellen in die Datenbank schreibt.

    Meine Frage ist jetzt: Wie gelange ich zu höchstmöglicher Fehlerbehandlung, sprich: Mit welchen Befehlen lassen sich (fast) alle möglichen Fehler herauslesen, die bei der Installation und beim Schreiben der Tabellen auftreten können?

    Bisher nutze ich:
    PHP-Code:
    mysql_query("CREATE TABLE IF NOT EXISTS `".$tbl_name."` (`name` text NOT NULL, `var` text NOT NULL) TYPE=MyISAM;"
    PHP-Code:
    ... or die("Fehler: ".mysql_error()); 
    Welche Möglichkeiten hat man noch?

    Grüße!

  • #2
    Wenn du nur die zwei Tabellen erstellst, hast du mit mysql_error eigentlich alles abgedeckt. sonst kann ja nicht mehr viel passieren.

    Achte aber auch drauf, dass der connect und select der DB funktioniert (falsche zugangsdaten werden nur all zu oft eingegeben)

    hier meldet sql_error aber auch alles wissenswerte.



    über mysql_errno() kannst du spezialfälle abfragen und ne eigene deutliche fehlermeldung ausgeben. falls gewünscht.

    Kommentar


    • #3
      üblicher ist ein DROP table IF EXISTS und dann ein CREATE. so macht es zB export von phpMyAdmin. Vorteil ist, dass du dann die Felder so hast wie du es möchtest. Nachteil, dass vorhandene Zeilen verschwinden.

      Kommentar


      • #4
        Original geschrieben von sternm
        Nachteil, dass vorhandene Zeilen verschwinden.
        Das ist leider ein recht großer Nachteil, denn das Script soll später auch zu Updatezwecken eingesetzt werden und es wäre sehr unvorteilhaft, wenn dabei immer alle Daten verloren gehen würden...

        @TobiaZ: Die Sache mit mysql_errno() klingt interessant und davon habe ich auch schon mal etwas gelesen. Danke für den Hinweis, werd's mir anschauen.

        Eine Frage am Rande bzgl. Kompatibilität:
        Welche Variante wäre besser?
        PHP-Code:
        mysql_query("CREATE TABLE IF NOT EXISTS `".$tbl_name."` (name text NOT NULL, var text NOT NULL) TYPE=MyISAM;"
        oder
        PHP-Code:
        mysql_query("CREATE TABLE IF NOT EXISTS `".$tbl_name."` (`name` text NOT NULL, `var` text NOT NULL) TYPE=MyISAM;"
        Also die Feldnamen in Anführungszeichen (`name`) oder ohne?

        Weitere Einwürfe sind weiterhin gerne gesehen.

        Grüße!

        Kommentar


        • #5
          der vollständigkeit wegen würde ich die variante mit backticks verwenden. Glaube aber nicht, dass du ernsthaft Probleme bekommst, wenn du sie nicht werdendest.

          Von der Verwendung reservierter Wörter wird ja ohnehin abgeraten..

          zum thema update/neuinstallation: da würde ich ne klare differenzierung vornehmen. Aber das ist ja eher ne sache der Query und hat mit dem Thread ja nichts zu tun.

          Kommentar


          • #6
            Okay, danke soweit.

            Weitere Frage: Ist es ratsam beim Erstellen den Typ der DB nicht mit anzugeben?

            PHP-Code:
            mysql_query("CREATE TABLE IF NOT EXISTS `".$tbl_name."` (name text NOT NULL, var text NOT NULL) TYPE=MyISAM;"
            Also TYPE=MyISAM wegzulassen? Welcher Typ wird standardmäßig erstellt, wenn man es weglässt?

            Kommentar


            • #7
              ich glaube, dass MyISAM ein default Tabelentype ist
              Slava
              bituniverse.com

              Kommentar


              • #8
                Original geschrieben von DerUnsympath
                Weitere Frage: Ist es ratsam beim Erstellen den Typ der DB nicht mit anzugeben?
                Die MyISAM-Speicher-Engine
                Der ältere Begriff TYPE wird aus Gründen der Abwärtskompatibilität noch als Synonym für ENGINE akzeptiert, doch ENGINE ist der aktuelle Begriff, während TYPE mittlerweile veraltet ist.

                Normalerweise ist eine ENGINE-Angabe für die MyISAM-Speicher-Engine unnötig. MyISAM ist ohnehin die Standard-Engine, es sei denn, die Standardeinstellung wurden geändert. Um in solchen Situationen ganz sicherzugehen, dass MyISAM verwendet wird, sollten Sie explizit die Option ENGINE verwenden.
                frag mich aber nicht, wie man die standardeinstellung ändert.
                also ich würde die db-engine immer explizit angeben.

                Kommentar

                Lädt...
                X