Michi: Umlaute Problem bei Abfrage in MYSQL Datenbank (PHP)

Also ich habe ein Problem mit dem Umlauten.

SELECT * FROM table WHERE city LIKE 'München'

Wenn ich diesen Befehl direkt ausführe bekomme ich ein Ergebniss.

Wenn ich es über mein PHP Script ausführe ist das Ergebniss leer.

Wenn ich allerdings nach Städten ohne Umlaute suche, wie

SELECT * FROM table WHERE city LIKE 'Hamburg'

funktioniert es über mein PHP Script einbandfrei.

An was könnte das liegen?

Michi

  1. Tach!

    Also ich habe ein Problem mit dem Umlauten.
    An was könnte das liegen?

    Daran, dass du dir anscheinend keine Gedanken um Zeichenkodierungen gemacht hast, und hoffst, dass es auch so funktioniert. Das klappt so leider nicht. Es gibt verschiedene Kodierungsformen und du musst dich über ihre Vor- und Nachteile auch in Bezug auf deine Anwendung informieren.

    Schau mal in unser Wiki http://wiki.selfhtml.org/wiki/Themen:Zeichencodierung. Im Einleitungstext ist eine allgemeine Einführung verlinkt, weiter unten dann die speziellen Informationen für die verwendeten Webtechniken. Du wirst deine gesamte Anwendung auf die Zeichenkodierungsproblematik untersuchen und anpassen müssen. Einfach nur den Datenbankteil zu nehmen wird nicht reichen, auch wenn es vielleicht auf den ersten Blick so aussieht.

    dedlfix.

    1. Ich hab zwar in der Datenbank UTF8 eingestellt, aber nicht über mein Script:

      Jetzt gehts...

      $datenbank = mysql_connect(DB_HOST,DB_USER,DB_PASSWORD);
      mysql_select_db(DB_NAME);
      mysql_set_charset('utf8', $datenbank);

      1. mysql_set_charset('utf8', $datenbank);

        Hm. da Du noch lernst:

        Vergiss php-mysql. Nimm jetzt gleich mysqli oder auch pdo (als "Abstraktionsschicht" zum Benutzen unterschiedlicher Datenbanken) und lerne das. Es lohnt sich, weil es das "alte" mysql-Modul womöglich nicht mehr lange macht.

        Jörg Reinholz

        1. Mahlzeit,

          Vergiss php-mysql. Nimm jetzt gleich mysqli oder auch pdo (als "Abstraktionsschicht" zum Benutzen unterschiedlicher Datenbanken) und lerne das.

          Wie schaut das eigentlich mit der Unterstützung von Hostern aus? Gibts da irgendwo Statistiken?
          Grad das wird ja die Tendenz in die eine oder andere Richtung massiv beeinflussen.
          Ich hab bisher dazu nichts gefunden.

          --
          42
          1. Tach!

            Nimm jetzt gleich mysqli oder auch pdo (als "Abstraktionsschicht" zum Benutzen unterschiedlicher Datenbanken) und lerne das.
            Wie schaut das eigentlich mit der Unterstützung von Hostern aus?

            PDO ist seit PHP 5.1 (2006) integraler Bestandteil, mysqli seit 5.0 (2005). Das aktuelle Minimum ist PHP 5.3 (2009, Support bis 07/2014). Ansonsten gibt es noch 5.4 und 5.5. Hoster, die kein PHP 5.3 unterstützen sollte man ebenfalls nicht unterstützen.

            dedlfix.

            1. Mahlzeit,

              PDO ist seit PHP 5.1 (2006) integraler Bestandteil, mysqli seit 5.0 (2005). Das aktuelle Minimum ist PHP 5.3 (2009, Support bis 07/2014). Ansonsten gibt es noch 5.4 und 5.5. Hoster, die kein PHP 5.3 unterstützen sollte man ebenfalls nicht unterstützen.

              Ok, wenns voll integriert ist und nicht als Modul nachinstalliert werden muss, kann der Programmierer davon ausgehen, es ist vorhanden.  Dann reicht es als Systemvorraussetzung PHP 5.3 anzugeben.

              Ich war nur etwas verunsichert, weil auf Squeeze php5-mysql als Modul nachinstalliert werden muss.

              --
              42
              1. Tach!

                Ok, wenns voll integriert ist und nicht als Modul nachinstalliert werden muss, kann der Programmierer davon ausgehen, es ist vorhanden. Dann reicht es als Systemvorraussetzung PHP 5.3 anzugeben.

                Also, hab ich "integraler Bestandteil" gesagt? Damit meinte ich nicht, dass es zum nichtbeeinflussbaren Core gehört, wie mail() oder die herkömmlichen Stringfunktionen. Es gehört aber zum Lieferumfang und man muss nicht extra irgendwo bei PECL vorbeischauen. Genau steht das ja im PHP-Handbuch, was wie enthalten oder hinzufügbar ist. PDO selbst ist beim Kompilieren standardmäßig freigegeben, und als Treiber SQLite. Den MySQL-Treiber muss man händisch einbinden. Ebenso muss man eine Configuration-Option setzen, wenn man mysqli haben möchte, aber auch bei mysql.

                Ich war nur etwas verunsichert, weil auf Squeeze php5-mysql als Modul nachinstalliert werden muss.

                Die Distributionen modularisieren das gern. Auch bei CentOS muss man die benötigten Module selbst installieren oder durch Abhängigkeiten mitinstallieren lassen. Vermutlich will man so dem Anwender die Möglichkeit geben, nicht benötigte Module weglassen zu können. Alles was nicht da ist, kann schließlich nicht missbraucht werden. Ein Hoster hat diese Wahl nicht, der muss alle Kunden zufriedenstellen und wird tunlichst alles installieren, was zum Lieferumfang von PHP gehört (auch wenn es nicht per Default kompiliert wird) und noch das eine oder andere PECL-Paket dazu.

                dedlfix.

            2. Hallo,

              Das aktuelle Minimum ist PHP 5.3 (2009, Support bis 07/2014).

              das ist irreführend formuliert. Es gibt einige Hoster, die in der Konfiguration alternativ zu einer halbwegs aktuellen 5.x-Version sogar immer noch PHP 4.x anbieten.

              Hoster, die kein PHP 5.3 unterstützen sollte man ebenfalls nicht unterstützen.

              Okay, die Aussage kann man so stehenlassen. ;-)

              Ciao,
               Martin

              --
              Man sollte immer wissen was man sagt
               - aber auf keinen Fall alles sagen, was man weiß.
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Tach!

                Das aktuelle Minimum ist PHP 5.3 (2009, Support bis 07/2014).
                das ist irreführend formuliert. Es gibt einige Hoster, die in der Konfiguration alternativ zu einer halbwegs aktuellen 5.x-Version sogar immer noch PHP 4.x anbieten.

                Nun, vermutlich wird es auch noch Installationen von PHP 3 oder gar noch eher geben. Die sind aber geauso wie PHP 4 nicht mehr aktuell (im Sinne von: werden bei Sicherheitsproblemen aktualisiert), und damit bleibt meine Aussage gültig.

                dedlfix.

                1. Hi,

                  Das aktuelle Minimum ist PHP 5.3 (2009, Support bis 07/2014).
                  das ist irreführend formuliert. Es gibt einige Hoster, die in der Konfiguration alternativ zu einer halbwegs aktuellen 5.x-Version sogar immer noch PHP 4.x anbieten.
                  Nun, vermutlich wird es auch noch Installationen von PHP 3 oder gar noch eher geben. Die sind aber geauso wie PHP 4 nicht mehr aktuell (im Sinne von: werden bei Sicherheitsproblemen aktualisiert), und damit bleibt meine Aussage gültig.

                  dann war sie trotzdem missverständlich. Ich habe sie verstanden als "das Minimum dessen, was in freier Wildbahn noch anzutreffen ist". Wenn du stattdessen "vernünftig" oder "empfehlenswert" meintest, ist das natürlich wieder richtig.

                  Ciao,
                   Martin

                  --
                  Liebet eure Feinde - vielleicht schadet das ihrem Ruf.
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(