Ankündigung

Einklappen
Keine Ankündigung bisher.

pdo: charset=utf8 oder exec("SET NAMES utf8”)?

Einklappen

Neue Werbung 2019

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

  • pdo: charset=utf8 oder exec("SET NAMES utf8”)?

    Hallo,
    ich bin gerade dabei die mysql_* Funktionen in unserer Schnittstelle durch pdo zu ersetzen.

    Dabei bin ich auf folgendes Problem gestoßen:

    Unsere Kunden haben Shops mit verschiedenen Zeichenkodierungen, so dass die pdo Verbindung je nach Parameter $encoding mit oder ohne Charset erstellt wird:

    PHP-Code:
    if ($encoding == "UTF-8") {
        
    $dsn 'mysql:dbname='.$dbname.';host='.$dbhostname.';charset=utf8';
    }
    else
    {
        
    $dsn 'mysql:dbname='.$dbname.';host='.$dbhostname;

    Das funktioniert auch gut, allerdings nur bei php Versionen 5.3.6 oder höher, da bei älteren Versionen die Option charset=utf8' ignoriert wird.

    http://stackoverflow.com/questions/4...rset-set-names


    Die Lösung für ältere php Versionen ist

    PHP-Code:
    $db->exec("SET NAMES utf8”); 
    Nun frage ich mich:
    Warum gibt es beides?
    Spricht irgendwas dagegen, immer $db->exec("SET NAMES utf8”); zu nehmen? Gibt es vielleicht Sicherheitsbedenken?

    Eigentlich ist php 5.3.6 ja schon seit März 2011 da, so dass jeder Kunde mindestens diese Version auf seinem Server installiert hat, aber vielleicht gibt es doch noch den einen oder anderen mit einer älteren php Version.

    Gruß
    Eviandem

  • #2
    Spricht nichts gegen. charset=<charset> ist erst später als Vereinfachung hinzugekommen und sollte in jedem Fall bevorzugt verwendet werden. Du kannst alternativ auch das machen.
    Exception-Option sollte obligatorisch gesetzt werden.

    Kommentar


    • #3
      Danke für die Antwort. Den letzten Satz verstehe ich nicht.

      Zitat von rkr Beitrag anzeigen
      Exception-Option sollte obligatorisch gesetzt werden.
      Was meinst Du damit?

      Kommentar


      • #4
        PHP-Code:
         $connection->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION); 

        Kommentar

        Lädt...
        X