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:
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
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
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;
}
http://stackoverflow.com/questions/4...rset-set-names
Die Lösung für ältere php Versionen ist
PHP-Code:
$db->exec("SET NAMES utf8”);
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
Kommentar