SebastianJu: Microsoft SQL-Server mit PHP genauso problemlos wie MySQL?

Hallo,

mit PHP zu MySQL kenne ich mich gut aus. Jetzt soll es aber darum gehen von PHP zu einem MS-SQL-Server zuzugreifen. Ist das genauso problemlos möglich wie mit MySQL oder gibt es da etwas zu beachten?

  1. Hallo,

    mit PHP zu MySQL kenne ich mich gut aus. Jetzt soll es aber darum gehen von PHP zu einem MS-SQL-Server zuzugreifen. Ist das genauso problemlos möglich wie mit MySQL oder gibt es da etwas zu beachten?

    die MSSQL-Funktionen sind nicht besonders gut dokumentiert, sie sind nicht so zahlreich und nicht immer ist die MSSQL-Anbindung freigeschaltet.

    Grundsätzlich rate ich Dir beim PHP-Zugriff auf MS SQL-Server zur Verwendung eines Abstraktionslayers. Ich selbst nutzte ADOdb.

    Freundliche Grüße

    Vinzenz

    1. die MSSQL-Funktionen sind nicht besonders gut dokumentiert, sie sind nicht so zahlreich und nicht immer ist die MSSQL-Anbindung freigeschaltet.

      Was meinst du mit "freigeschaltet"? Zugriff dürfte ich auf alles bekommen was da an Servern ist.

      Grundsätzlich rate ich Dir beim PHP-Zugriff auf MS SQL-Server zur Verwendung eines Abstraktionslayers. Ich selbst nutzte ADOdb.

      Das würde dann bedeuten dass man mit den selben Befehlen auf Mysql und mssql zugreifen könnte oder? Ist damit auch die Funktionsvielfalt erweitert?

      Ich werde mal schauen was besser funktioniert. Theoretisch werde ich nicht viel mehr als Insert, Update und Select brauchen. Alles andere sollte in den SQL-Anweisungen selbst passieren können.
      Verändern die Abstraktionslayer auch die SQL-Anweisungen? So dass man eine andere Syntax braucht?

      1. Hallo,

        die MSSQL-Funktionen sind nicht besonders gut dokumentiert, sie sind nicht so zahlreich und nicht immer ist die MSSQL-Anbindung freigeschaltet.
        Was meinst du mit "freigeschaltet"? Zugriff dürfte ich auf alles bekommen was da an Servern ist.

        nicht vorhanden :-)
        Wie sieht Deine Konfiguration aus?

        [ ] PHP auf gleichem Rechner wie DB-Server
        [ ] PHP auf anderem Rechner als DB-Server, aber ebenfalls Windows
        [ ] PHP auf unix-artigem Betriebssystem
        [ ] PHP auf ganz anderem Betriebssystem, ____________

        Das würde dann bedeuten dass man mit den selben Befehlen auf Mysql und mssql zugreifen könnte oder? Ist damit auch die Funktionsvielfalt erweitert?

        Nein. Entweder Du beschränkst Dich auf den jeweiligen SQL-Dialekt oder auf das gemeinsame Minimum. Wenn Du Zeichenketten verkettest, hast Du es bei MySQL und T-SQL (dem SQL-Dialekt des MS SQL-Server) mit zwei unterschiedlichen Lösungen zu tun, die eines gemeinsam haben: sie sind proprietär:

        MySQL verwendet die Funktion CONCAT(), T-SQL den Operator +, SQL-Standard ist der Operator ||.

        Ich werde mal schauen was besser funktioniert. Theoretisch werde ich nicht viel mehr als Insert, Update und Select brauchen. Alles andere sollte in den SQL-Anweisungen selbst passieren können.

        Einfaches Beispiel: Die mssql_*-Funktionen bieten keine Funktion für das Maskieren von Zeichenketten für den SQL-Kontext an. Du darfst Dir diese selbst schreiben. magic_quotes_sybase zu verwenden, ist keine gute Idee.

        Freundliche Grüße

        Vinzenz

        1. nicht vorhanden :-)
          Wie sieht Deine Konfiguration aus?

          [ ] PHP auf gleichem Rechner wie DB-Server
          [ ] PHP auf anderem Rechner als DB-Server, aber ebenfalls Windows
          [ ] PHP auf unix-artigem Betriebssystem
          [ ] PHP auf ganz anderem Betriebssystem, ____________

          Ich weiß es noch nicht. Ich schätze aber PHP wird getrennt von der Datenbank sein. Ich weiß es aber nicht. Aber ich denke ich werde nur den PHP-Bereich coden. Den Rest kann ich hoffentlich anderen überlassen. Ich denke ich werde dann nur Host, User und Pass und Datenbank brauchen.

          Nein. Entweder Du beschränkst Dich auf den jeweiligen SQL-Dialekt oder auf das gemeinsame Minimum. Wenn Du Zeichenketten verkettest, hast Du es bei MySQL und T-SQL (dem SQL-Dialekt des MS SQL-Server) mit zwei unterschiedlichen Lösungen zu tun, die eines gemeinsam haben: sie sind proprietär:

          MySQL verwendet die Funktion CONCAT(), T-SQL den Operator +, SQL-Standard ist der Operator ||.

          Aha. Na ich denke dass die Extension die ich programmieren würde nur mit einer Datenbankart betrieben wird. Weshalb ich da glaube ich erstmal nicht auf Interoperabilität mit anderen Datenbanken werde achten müssen.

          Ich werde mal schauen was besser funktioniert. Theoretisch werde ich nicht viel mehr als Insert, Update und Select brauchen. Alles andere sollte in den SQL-Anweisungen selbst passieren können.

          Einfaches Beispiel: Die mssql_*-Funktionen bieten keine Funktion für das Maskieren von Zeichenketten für den SQL-Kontext an. Du darfst Dir diese selbst schreiben. magic_quotes_sybase zu verwenden, ist keine gute Idee.

          Danke für die Aufklärung. Ich hoffe das klappt soweit alles. Wenn nicht kann ich ja hier noch mal nachfragen... :)

          1. Hallo,

            Wie sieht Deine Konfiguration aus?

            [ ] PHP auf gleichem Rechner wie DB-Server
            [ ] PHP auf anderem Rechner als DB-Server, aber ebenfalls Windows
            [ ] PHP auf unix-artigem Betriebssystem
            [ ] PHP auf ganz anderem Betriebssystem, ____________

            Ich weiß es noch nicht. Ich schätze aber PHP wird getrennt von der Datenbank sein. Ich weiß es aber nicht.

            es ist eine gute Idee, die vorgesehene Produktivumgebung zu wissen und wenigstens eine entsprechende Testumgebung aufzusetzen (mit möglichst ähnlichen Versionen). Es ist ein enormer Unterschied, ob Deine PHP-Umgebung auf einem Windows- oder einem *ix-artigen Betriebssystem zum Einsatz kommen wird. Das solltest Du von vornherein abklären. Unter Windows kannst Du mit dem von Microsoft bereitgestellten Treiber arbeiten, unter *ix geht dies nicht.

            Freundliche Grüße

            Vinzenz

            1. Du meinst ich brauche extra einen Treiber um von PHP auf MSSQL zugreifen zu können? Ich habe Dienstag einen Termin da könnte ich noch mal nachfragen. Bisher hat man mir gesagt "auf der vorhandenen LAMP / Typo3 Umgebung umsetzen". Also dürfte das ein Linuxserver sein.
              Gibt das Probleme?

              1. Hallo Sebastian,

                Du meinst ich brauche extra einen Treiber um von PHP auf MSSQL zugreifen zu können? Ich habe Dienstag einen Termin da könnte ich noch mal nachfragen.

                Bisher hat man mir gesagt "auf der vorhandenen LAMP / Typo3 Umgebung umsetzen".  Also dürfte das ein Linuxserver sein.

                Gibt das Probleme?

                verschaffe Dir einen Überblick über die Konstellation. Was fällt mir auf die Schnelle ein?

                • Distribution, Version

                • apache-Version

                • PHP-Version

                • Ausgabe von phpinfo() (nicht kastriert :-))

                • Typo3-Version

                • Firmenpolicies bezüglich eingesetzter Software
                    z.B. Verbot, Pakete, die nicht aus der Paketverwaltung kommen, zu installieren

                • Windows-Server, Version

                • MS SQL-Server, Version

                • Zugriffsmöglichkeiten (standardmäßig ist Zugriff über TCP/IP deaktiviert), ...

                Zur Extension: AdoDB scheint übrigens von Typo3 gut unterstützt zu werden.
                Am besten heute noch tun:
                a) Typo3-System auf Deiner bevorzugten Linuxdistribution installieren.
                b) Zugriff für PHP von diesem System auf einen (hoffentlich bereits vorhandenen)
                   MS SQL-Server einrichten.

                Freundliche Grüße

                Vinzenz

                1. Hallo Vinzenz,

                  wir haben vor dem Termin gestern mal auf das phpinfo geschaut und es war kein mssql-plugin installiert. Der Kunde hat zugestimmt das zu installieren.

                  Heute habe ich aber die Nachricht bekommen: "Bei dem anderen Projekt ist MSSQL gestorben, weil SUSE das nicht plain unterstützt. Es wird dann auf MySQL laufen."

                  Keine Ahnung wieso das jetzt nicht gehen soll und wieso plötzlich MySQL doch ok ist. Immerhin wollte der Kunde anfangs sogar in asp.net programmieren um MSSQL nutzen zu können.

                  Naja, jetzt habe ich gerade mal bis 29. Zeit das zu machen weil der Kunde des Kunden diesen Termin gesetzt hat... :)

                  Aber ich denke das klappt schon...

                  Danke für die Infos...

                  1. Hallo Sebastian,

                    wir haben vor dem Termin gestern mal auf das phpinfo geschaut und es war kein mssql-plugin installiert. Der Kunde hat zugestimmt das zu installieren.

                    Wer machts? Du? Trainiere vorher und dokumentiere Dein Training.

                    Heute habe ich aber die Nachricht bekommen: "Bei dem anderen Projekt ist MSSQL gestorben, weil SUSE das nicht plain unterstützt. Es wird dann auf MySQL laufen."

                    Keine Ahnung wieso das jetzt nicht gehen soll und wieso plötzlich MySQL doch ok ist.

                    Warum? Vermutlich deswegen:

                    • Firmenpolicies bezüglich eingesetzter Software
                        z.B. Verbot, Pakete, die nicht aus der Paketverwaltung kommen, zu installieren

                    Naja, jetzt habe ich gerade mal bis 29. Zeit das zu machen weil der Kunde des Kunden diesen Termin gesetzt hat... :)

                    Viel Erfolg!

                    Freundliche Grüße

                    Vinzenz

                    1. Hallo Vinzenz,

                      wir haben vor dem Termin gestern mal auf das phpinfo geschaut und es war kein mssql-plugin installiert. Der Kunde hat zugestimmt das zu installieren.

                      Wer machts? Du? Trainiere vorher und dokumentiere Dein Training.

                      Hätte der Kunde gemacht.

                      Heute habe ich aber die Nachricht bekommen: "Bei dem anderen Projekt ist MSSQL gestorben, weil SUSE das nicht plain unterstützt. Es wird dann auf MySQL laufen."

                      Keine Ahnung wieso das jetzt nicht gehen soll und wieso plötzlich MySQL doch ok ist.

                      Warum? Vermutlich deswegen:

                      • Firmenpolicies bezüglich eingesetzter Software
                          z.B. Verbot, Pakete, die nicht aus der Paketverwaltung kommen, zu installieren

                      Also mir hat man nur gesagt dass SUSE MSSQL nicht in plain unterstützt und dass das der Grund wäre. Mit den Protokollen usw kenne ich mich aber nicht aus daher weiß ich nichts damit anzufangen.

                      Naja, jetzt habe ich gerade mal bis 29. Zeit das zu machen weil der Kunde des Kunden diesen Termin gesetzt hat... :)

                      Viel Erfolg!

                      Danke!
                      Sebastian

  2. Hi!

    mit PHP zu MySQL kenne ich mich gut aus.

    Das ist von Vorteil für Dein Vorhaben.

    Jetzt soll es aber darum gehen von PHP zu einem MS-SQL-Server zuzugreifen. Ist das genauso problemlos möglich wie mit MySQL oder gibt es da etwas zu beachten?

    Den Abschnitt über Microsoft SQL Server in der einzigen relevanten Dokumentation zu PHP kennst Du?

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
    1. Hatte ich bisher noch nicht gekannt. Auf den ersten Blick sieht das Ganze ziemlich identisch aus zu Mysql. In den Funktionen muss ja fast auch nur ein y mit einem s ausgetauscht werden.
      Solange es da keine anderen Probleme gibt denke ich wird das schon klappen...

      Danke!

      1. Hi!

        Hatte ich bisher noch nicht gekannt. Auf den ersten Blick sieht das Ganze ziemlich identisch aus zu Mysql. In den Funktionen muss ja fast auch nur ein y mit einem s ausgetauscht werden.
        Solange es da keine anderen Probleme gibt denke ich wird das schon klappen...

        Beachte bitte unbedingt den Hinweis von Vinzenz - wenn immer es um Datenbanken/SQL geht, ist er hier _die_ Autorität - im positivsten Sinne natürlich!

        off:PP

        --
        "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  3. Hallo Sebastian,

    mit PHP zu MySQL kenne ich mich gut aus. Jetzt soll es aber darum gehen von PHP zu einem MS-SQL-Server zuzugreifen.

    wie gut kennst Du Dich mit T-SQL aus? Es gibt eine Menge Steine, über die Du stolpern kannst, wenn Du vom MySQL-SQL-Dialekt ausgehst.

    Freundliche Grüße

    Vinzenz

    1. wie gut kennst Du Dich mit T-SQL aus? Es gibt eine Menge Steine, über die Du stolpern kannst, wenn Du vom MySQL-SQL-Dialekt ausgehst.

      Ich kenne das alte SQL welches in MSAccess benutzt wird und in MSSQLServer habe ich früher in Verbindung mit MSAccess auch schon mal Cursor usw programmiert.

      Aber wie gesagt eigentlich brauche ich eher die Grundfunktionen. Join usw wird ja alles vorhanden sein...