Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP/PDO/MySQL:Einfügen in MEDIUMBLOB speichert fehlerhafte Daten

Ich denke nicht, dass das ein Bug sein muss. Ich kann mir vorstellen, dass immer dann, wenn der Client mit dem Server spricht und sagt, dass der folgende Befehl in UTF-8 vorliegt und der Server ihn in Latin-1 benötigt, die Abfrage möglicherweise vor dem Parsen und Ausführen neu codiert wird. Dies ist also ein Codierungsproblem für den Transport der Daten. Da die gesamte Abfrage vor dem Parsen von dieser Neucodierung beeinflusst wird, werden auch die Binärdaten für die BLOB-Spalte geändert.

Aus dem Mysql-Handbuch:

Oder auf dem Rückweg:Latin1-Daten aus dem Store werden in UTF-8 konvertiert, weil der Client dem Server mitgeteilt hat, dass er UTF-8 für den Transport bevorzugt.

Der Bezeichner für PDO selbst, den Sie nennen, sieht ganz anders aus:

Ich bin kein MySQL-Experte, aber ich würde es so erklären. Client und Server müssen aushandeln, welche Zeichensätze sie verwenden, und ich nehme an, sie tun dies aus einem bestimmten Grund.