Ganzzahlen und Zahlen als Typen in PHP von MySQL zurückgeben
Obwohl PDO::ATTR_STRINGIFY_FETCHES auf „false“ gesetzt ist, können bei numerischen Spalten Probleme auftreten werden weiterhin als Zeichenfolgen anstelle von Ganzzahlen oder Zahlen zurückgegeben. Dieses Verhalten wird häufig auf ein Treiberimplementierungsproblem zurückgeführt.
Der Mysqlnd-Unterschied
Der Schlüssel zur Lösung dieses Problems liegt darin, sicherzustellen, dass Sie Mysqlnd verwenden Treiber für PHP. Wenn Sie php -i anzeigen, weist das Fehlen von „mysqlnd“ im Abschnitt pdo_mysql darauf hin, dass stattdessen der native Treiber verwendet wird.
Mysqlnd installieren
Auf Ubuntu installieren php5-mysqlnd statt php5-mysql. Um einen erfolgreichen Übergang sicherzustellen, befolgen Sie diese Schritte:
Mysqlnd überprüfen
Bei der Installation von php5-mysqlnd sollte php -i jetzt explizit „mysqlnd“ im Abschnitt pdo_mysql erwähnen.
PDO Einstellungen
Legen Sie die folgenden PDO-Attribute fest, um eine ordnungsgemäße Datenverarbeitung sicherzustellen:
Zurückgegeben Werte
Mit dem richtigen Treiber und den richtigen Einstellungen werden numerische Spalten als entsprechende PHP-Typen zurückgegeben:
Zum Beispiel folgende Daten:
+-----------+-----------+----------+-------------+--------------+ | integer_col | double_col | float_col | decimal_col | bigint_col | +-----------+-----------+----------+-------------+--------------+ | 1 | 1.55 | 1.5 | 1.20 | 18446744073709551615 | +-----------+-----------+----------+-------------+--------------+
Werden zurückgegeben als:
object(stdClass)[915] public 'integer_col' => int 1 public 'double_col' => float 1.55 public 'float_col' => float 1.5 public 'decimal_col' => string '1.20' (length=4) public 'bigint_col' => string '18446744073709551615' (length=20)
Das obige ist der detaillierte Inhalt vonWarum sind die Ergebnisse meiner numerischen PHP-MySQL-Spalte manchmal Zeichenfolgen statt Ganzzahlen oder Gleitkommazahlen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!