Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann sichergestellt werden, dass numerische MySQL-Spalten als PHP-Ganzzahlen und -Zahlen zurückgegeben werden?

Wie kann sichergestellt werden, dass numerische MySQL-Spalten als PHP-Ganzzahlen und -Zahlen zurückgegeben werden?

Linda Hamilton
Linda HamiltonOriginal
2024-12-08 06:44:10973Durchsuche

How to Ensure MySQL Numeric Columns Return as PHP Integers and Numerics?

Ganzzahlige und numerische Spalten von MySQL als PHP-Ganzzahlen und -Zahlen zurückgeben

Problem:
Abfrageergebnisse geben alle Spalten als Zeichenfolgentypen zurück , obwohl in der ganzzahlige und numerische Spalten definiert sind Datenbank.

Kompliziertheit:
Die Herausforderung ergibt sich aus Einschränkungen bei der Treiberimplementierung. Einige Treiber unterstützen die Rückgabe numerischer Typen als PHP-Ganzzahlen oder -Zahlen nicht, was zu einer Diskrepanz zwischen dem Datentyp der Datenbank und der PHP-Darstellung führt.

Lösung:
Der Schlüssel zur Lösung dieses Problems Das Problem besteht darin, sicherzustellen, dass der mysqlnd-Treiber für PHP verwendet wird. mysqlnd ist ein nativer MySQL-Treiber, der die notwendige Unterstützung für die korrekte Rückgabe numerischer Typen bietet.

So installieren Sie mysqlnd:
Für Ubuntu-Systeme:

  1. Entfernen Sie den aktuellen nativen Treiber: apt-get remove php5-mysql
  2. Installieren mysqlnd: apt-get install php5-mysqlnd
  3. Apache neu starten: service apache2 restart

Überprüfen, ob mysqlnd verwendet wird:
Führen Sie nach der Installation php aus -i, um zu überprüfen, ob mysqlnd verwendet wird. Suchen Sie in der Ausgabe nach der folgenden Zeile:

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.10 - 20111026 -

Wesentliche PDO-Einstellungen:
Um die ordnungsgemäße Verarbeitung numerischer Werte sicherzustellen, sind zwei PDO-Einstellungen von entscheidender Bedeutung:

  1. PDO::ATTR_EMULATE_PREPARES: Setzen Sie dies auf „false“, um die Leistung zu verbessern und zu vermeiden Mögliche Probleme.
  2. PDO::ATTR_STRINGIFY_FETCHES: Deaktivieren Sie dies, um zu verhindern, dass der Treiber numerische Werte in Zeichenfolgen umwandelt.

Nach dem Setzen dieser Flags erhalten Sie Ihre Abfrageergebnisse gibt nun wie erwartet ganzzahlige und numerische Spalten zurück. Hier ist ein Beispiel für die zurückgegebenen Werte:

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 vonWie kann sichergestellt werden, dass numerische MySQL-Spalten als PHP-Ganzzahlen und -Zahlen zurückgegeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn