Tach!
Wenn ich ihn [den Code] hier ohne Test-Zeilen ausliefere, dann wird das Problem nicht klar.
Das Problem wurde auch mit den Test-Zeilen nicht klar, weil es mit diesen Testdaten gar nicht auftrat. Hast du denn überhaupt nicht geprüft, ob diese Testdaten denselben Fehler bringen? Anscheinend nicht, denn dann wäre dir früher aufgefallen, dass PHP hier keine Schuld hat.
Ich habe einen Verdacht. Da das Hochkomma ' in PHP ja auch Feldbegrenzer ist, könnte es in den Tiefen der PHP-Programme umgesetzt worden sein.
Nein, Code ist Code und Daten sind Daten. Sonderzeichen in Stringliteralen im Code werden vom Parser weginterpretiert. Intern arbeitet PHP mit Rohdaten. Auch wenn Daten vom DBMS kommen, sind das Rohdaten. Es gibt keine Probleme mit der generellen Verarbeitbarkeit bestimmter Zeichen oder Bytewerte.
Aber egal, wo ich nachschaue (mein erzeugter HTML-Quellcode, phpMyAdmin), in den Daten finde ich immer das Hochkamma. Möglich, dass meine Browser mir das nur vorgaukeln.
Wenn du solche Probleme hast, dann solltest du direkt an Ort und Stelle nachschauen und dann rückwärts gehen, bis du die Quelle/Ursache gefunden hast. Die wichtigsten Hilfsmittel dazu sind schon so oft hier im Forum genannt worden ...
var_dump() nimmt man am besten für Kontrollausgaben, nicht irgendwelche echo-Konstrukte.
Für vermutete Zeichenkodierungsprobleme gibt es kein direktes Hilfsmittel. bin2hex() liefert von allem die Bytewert, ist aber schwer auseinanderzuklamüsern. urlencode() ist nicht dafür gedacht, lässt sich aber gut verwenden, weil es die unwichtigen Buchstaben und Ziffern a-zA-Z0-9 im Klartext lässt und man so die eigentlich interessanten Stellen besser findet.
Diese beiden Hilfsmittel sollten an prominenter Stelle in deinem PHP-Programmierer-Werkzeugkasten hängen.
dedlfix.