Ankündigung

Einklappen
Keine Ankündigung bisher.

MySQLi: SET NAMES 'utf8'

Einklappen

Neue Werbung 2019

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

  • MySQLi: SET NAMES 'utf8'

    Bisher setze ich bei jedem Verbindungsaufbau zur DB auch den Uni-Code:

    Code:
    $result = mysqli_query($con,"SET NAMES 'utf8' COLLATE 'utf8_unicode_ci' ");
    If (!$result) {die ("UTF-8 konnte nicht gesetzt werden");};
    Ist das jedesmal nötig?
    Oder ist der Befehl solange persistent bis er durch einen anderen "SET NAMES" überschrieben wird?

    Was ist wenn ich die DB-Verbindung wieder schliesse über
    Code:
    mysqli_close($con);
    Muss ich dann beim erneuten Verbindungsaufbau auch wieder "SET NAMES" setzen?

  • #2
    Ja
    Nein
    Ja
    Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

    Kommentar


    • #3
      Mit anderen Worten: Das ist an die Verbindung (das, was mysqli_connect erzeugt) gekoppelt. Pro Verbindung brauchst du es nur einmal zu setzen.

      Kommentar


      • #4
        Meine Empfehlung: Zusätzlich das SET NAMES 'utf8' in die my.cnf aufnehmen und bei jedem Verbindungsaufbau automatisch ausführen lassen.
        [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

        Kommentar


        • #5
          Eigentlich sollst du das so gar nicht machen. Dafür gibts bereits eine Funktion:
          mysqli_set_charset();

          http://de2.php.net/mysqli.set-charset
          Windows Server gehören NICHT ins Internet!

          Dildo? Dildo!

          Kommentar


          • #6
            Zitat von ChristianK Beitrag anzeigen
            Meine Empfehlung: Zusätzlich das SET NAMES 'utf8' in die my.cnf aufnehmen und bei jedem Verbindungsaufbau automatisch ausführen lassen.
            Da hast du dann meines Erachtens halt schnell diese „config hell“-Probleme, weil ein anderes System, auf dem du die Software vielleicht mal laufen lassen willst, nicht per my.cnf entsprechend konfiguriert oder konfigurierbar ist.

            Zitat von trollface
            mysqli_set_charset();
            Möchte ich auch noch mal unterstreichen, weil wir es nicht beachtet hatten bisher. Die Funktion (gegebenenfalls Methode) ist die korrekte Weise, das zu setzen.

            Kommentar


            • #7
              Zitat von mermshaus Beitrag anzeigen
              Da hast du dann meines Erachtens halt schnell diese „config hell“-Probleme, weil ein anderes System, auf dem du die Software vielleicht mal laufen lassen willst, nicht per my.cnf entsprechend konfiguriert oder konfigurierbar ist. [...]
              Korrekt. Dann müsste ich das so ergänzen, dass man das zusätzlich machen sollte. Bei eigener Software hat man das Charset ja im Griff - andere beachten das evt. nicht.
              [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

              Kommentar


              • #8
                Auch wenn es schon erwähnt und erledigt ist, der Vollständigkeit halber dennoch dieser tolle Artikel erwähnt, ev. interessiert es den TE ja auch noch, da ist das auch im letzten Absatz thematisiert: http://php-de.github.io/jumpto/mysql-and-utf8/

                ...
                Ab PHP 5.2.3 existiert übrigens die Funktion mysqli_set_charset(), welche statt einem manuellen SET NAMES genutzt werden sollte, da ...
                LG
                The string "()()" is not palindrom but the String "())(" is.

                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar

                Lädt...
                X