Stringified Numeric Retrieval von PDO: Ein gelüftetes Geheimnis
Bei der Verwendung von PDO zusammen mit MySQL sind Sie möglicherweise auf eine Kuriosität gestoßen: das Abrufen ganzzahliger Werte aus dem Datenbank nur um String-Darstellungen anstelle von numerischen Typen zu erhalten. Lassen Sie uns untersuchen, wie Sie dieses Dilemma beheben können.
Eine fehlgeschlagene Attributänderung
Im Bereich der PDO-Attribute liegt PDO::ATTR_STRINGIFY_FETCHES, das angeblich genau dieses Problem löst. Versuche, es für MySQL-Treiber zu ändern, führen jedoch häufig zu einer Fehlermeldung.
Numerische Zeichenfolgen: Eine Norm?
Überraschenderweise ist das Abrufen von Zeichenfolgen anstelle von Zahlen aus Datenbankabfragen möglich alltäglicher als Sie vielleicht denken. Dieses Verhalten ist auf die Standardeinstellung der PDO-Emulation vorbereiteter Anweisungen zurückzuführen.
Die Lösung: Vorbereitete Anweisungen ohne Emulation
Der Schlüssel zur Lösung dieses Dilemmas liegt in der Deaktivierung der Nachahmung vorbereiteter Aussagen. So geht's:
new PDO($dsn, $user, $pass, array( PDO::ATTR_EMULATE_PREPARES => false ))
Indem Sie die Emulation deaktivieren, erlauben Sie mysqlnd (verfügbar in PHP 5.3 und höher), native Datentypen aus vorbereiteten Anweisungen zurückzugeben, einschließlich Ganzzahlen als numerische Werte.
Wichtige Randbemerkung
Es ist erwähnenswert, dass die Verwendung vorbereiteter Aussagen eine sehr empfehlenswerte Vorgehensweise ist unabhängig von Bedenken hinsichtlich der numerischen Abfrage. Dies erhöht nicht nur die Codesicherheit, sondern steigert möglicherweise auch die Leistung. Betrachten Sie diese Lösung also als einen Silberstreif am Horizont in Ihrem Streben nach effizienter Datenverarbeitung.
Das obige ist der detaillierte Inhalt vonWarum ruft mein PDO MySQL Integer Zeichenfolgen ab und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!