Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich sicherstellen, dass numerische und ganzzahlige MySQL-Spalten in PHP als korrekter Datentyp zurückgegeben werden?

Wie kann ich sicherstellen, dass numerische und ganzzahlige MySQL-Spalten in PHP als korrekter Datentyp zurückgegeben werden?

Mary-Kate Olsen
Freigeben: 2024-12-05 15:15:10
Original
336 Leute haben es durchsucht

How Can I Ensure MySQL Numeric and Integer Columns Are Returned as the Correct Data Type in PHP?

Konvertieren von numerischen und ganzzahligen MySQL-Spalten in ganze Zahlen in PHP

Problemübersicht

PHP-Abfragen geben häufig alle Spalten als Zeichenfolgen zurück, auch wenn es sich um Ganzzahlen handelt oder numerische Werte in MySQL. Dies kann problematisch werden, wenn Daten mit bestimmten Formatanforderungen verarbeitet werden, z. B. JSON-Ausgaben, die von mehreren Diensten genutzt werden.

Widerlegen häufiger Missverständnisse

Während einige Quellen behaupten, dass die Rückgabe numerischer Typen nicht möglich sei, ist dies der Fall nicht ganz wahr. Die folgenden Missverständnisse können zurückgewiesen werden:

  • Type Casting: Die manuelle Umwandlung von Werten im Code ist ineffizient und kann zu Inkonsistenzen führen.
  • Loose Typing: Die lose Typisierung von PHP ist keine zuverlässige Lösung, da Daten unbeabsichtigt konvertiert werden können Zeichenfolgen.
  • Treibereinschränkungen: Der native MySQL-Treiber unter Linux unterstützt die Rückgabe numerischer Typen nicht vollständig. Es gibt jedoch einen Workaround, um eine korrekte Handhabung sicherzustellen.

Lösung

Der Schlüssel zur Lösung dieses Problems ist die Verwendung des mysqlnd-Treibers für PHP. Im Gegensatz zum nativen Treiber unterstützt mysqlnd die Rückgabe numerischer Typen für Ganzzahlspalten (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) und Gleitkommaspalten mit doppelter Genauigkeit (DOUBLE).

Installieren und Bestätigen von mysqlnd

Um zu überprüfen, ob Sie mysqlnd verwenden, führen Sie php -i aus. Wenn im Abschnitt „pdo_mysql“ „mysqlnd“ erwähnt wird, ist der Treiber vorhanden. Andernfalls befolgen Sie diese Schritte, um es zu installieren:

Ubuntu:

  1. Entfernen Sie den alten Treiber: apt-get remove php5-mysql
  2. Mysqlnd installieren: apt-get install php5-mysqlnd
  3. Neustart Apache: Dienst Apache2 neu starten

Anwesenheit bestätigen: Nach der Installation sollte php -i nun die mysqlnd-Version im Abschnitt pdo_mysql anzeigen.

PDO-Einstellungen

Stellen Sie außerdem sicher, dass die folgenden PDO-Einstellungen festgelegt sind richtig:

  • PDO::ATTR_EMULATE_PREPARES sollte falsch sein
  • PDO::ATTR_STRINGIFY_FETCHES sollte falsch sein

Zurückgegebene Werttypen

  • FLOAT- und DOUBLE-Spalten werden als PHP zurückgegeben floats.
  • INTEGER-Spalten werden als PHP-Ganzzahlen zurückgegeben.
  • DECIMAL- und NUMERIC-Spalten werden als Strings zurückgegeben.

Beispiel

Mit mysqlnd und Mit den richtigen PDO-Einstellungen können Sie jetzt MySQL-Tabellen abfragen und numerische Werte in der erwarteten Form erhalten Format:

$result = $pdo->query('SELECT * FROM table');
$row = $result->fetch(PDO::FETCH_OBJ);

echo $row->integer_col; // 1 (integer)
echo $row->double_col; // 1.55 (float)
echo $row->decimal_col; // '1.20' (string)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich sicherstellen, dass numerische und ganzzahlige MySQL-Spalten in PHP als korrekter Datentyp zurückgegeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage