PHP: 7 PDO-Abruf (Alle) versucht, Typen in zugeordneten Typ zu konvertieren

Heute habe ich herausgefunden, dass unser Code mit einer Änderung der PDO abwärtskompatibel zu sein scheint. In PHP <5.6 werden die Ergebnismengen von einemPDOStatement durch seine Funktionenfetch undfetchAll gibt Zeilen zurück, deren Werte entweder eine Zeichenfolge oder null sind. Unser Code basiert auf diesem Attribut.

Vor einiger Zeit haben wir auf PHP 7 aktualisiert. Es stellt sich heraus, dass PDO nun versucht, @ zu konvertiereetwa Datentypen zu anderen zugeordneten Typen. Zum Beispiel einFLOAT -Spalte erstellt einen Gleitkommawert imPDOStatement Ergebnismenge. Und einTINYINTie Spalte @ erstellt einen ganzzahligen Wert in der Ergebnismenge. Interessanterweise einBIGINT oder ein großesINT UNSIGNED wird als Zeichenfolge angezeigt, wenn es nicht als Ganzzahl angezeigt werden kann, sowie bei bestimmten anderen Typen (z. B.DECIMAL) werden nicht in irgendetwas konvertiert. Sie bleiben Fäden. Ich dachte, es war ein allgemein anerkanntes Prinzip, dass die Konvertierung von Datentypen aus einer MySQL-Datenbank in PHP-Datentypen problematisch ist und nicht von PHP selbst durchgeführt werden sollte, aber anscheinend hat PHP 7 eine andere Entscheidung getroffen.

as PDO von @So PHP 7 führt eine Reihe von Konvertierungsregeln ein, die es intern verwendet, um aus einer Datenbank ausgewählte Werte zu konvertieren, die jedoch meine Codebasis durcheinander bringen. Aufgrund der Inkonsistenzen dieser Konvertierungsregeln würde ich meine Codebasis lieber nicht in ändern zu ihnen passen. Gibt es vielleicht eine Einstellung oder ein Flag, das ich umschalten kann, um zu verhindern, dass PDO die abgerufenen Werte konvertiert?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage