Heim > Datenbank > MySQL-Tutorial > Warum werden meine numerischen MySQL-Werte in PHP als Zeichenfolgen zurückgegeben und wie kann ich das Problem beheben?

Warum werden meine numerischen MySQL-Werte in PHP als Zeichenfolgen zurückgegeben und wie kann ich das Problem beheben?

Barbara Streisand
Freigeben: 2024-12-05 07:29:11
Original
667 Leute haben es durchsucht

Why Are My MySQL Numeric Values Returned as Strings in PHP, and How Can I Fix It?

Auflösen der Diskrepanz bei der Rückgabe ganzzahliger und numerischer Werte von MySQL in PHP

Das Abrufen von Daten aus MySQL mit PHP kann rätselhaft sein Es kommt zu Typinkonsistenzen, bei denen ganzzahlige und numerische Spalten als Zeichenfolgen anstelle der beabsichtigten Daten zurückgegeben werden Typen.

Das Treiberproblem

Es ist wichtig, den zugrunde liegenden Treiber zu bestimmen, der für die Datenbankkonnektivität verwendet wird. Das Problem liegt häufig an der Verwendung des nativen MySQL-Treibers, der nicht in der Lage ist, numerische Typen als Ganzzahlen zurückzugeben.

Identifizieren des MySQLnd-Treibers

Um festzustellen, ob dies der Fall ist Überprüfen Sie mithilfe des nativen MySQL-Treibers die Ausgabe von php -i. Wenn „mysqlnd“ im Abschnitt „pdo_mysql“ nicht erwähnt wird, verwenden Sie wahrscheinlich den nativen Treiber.

Wechseln zum MySQLnd-Treiber

Die Lösung liegt darin Wechsel zum mysqlnd-Treiber, der die korrekte Rückgabe numerischer Typen unterstützt. Unter Ubuntu kann dies erreicht werden durch:

sudo apt-get remove php5-mysql
sudo apt-get install php5-mysqlnd
sudo service apache2 restart
Nach dem Login kopieren

PDO-Einstellungen

Sobald der mysqlnd-Treiber installiert ist, stellen Sie sicher, dass die folgenden PDO-Einstellungen korrekt eingestellt sind:

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
Nach dem Login kopieren

Zurückgegebene Werte

Nach der Implementierung des oben Gesagten Schritte, MySQL-Abfrageergebnisse geben wie erwartet numerische Typen zurück:

  • Gleitkommatypen (FLOAT, DOUBLE) als PHP-Floats
  • Ganzzahltypen (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) als PHP-Ganzzahlen
  • Festkommatypen (DECIMAL, NUMERIC) als Zeichenfolgen (Hinweis: BIGINTs mit mehr als 64 Bit werden ebenfalls als Zeichenfolgen zurückgegeben)

Ein Beispiel für die zurückgegebenen Werte wäre:

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)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum werden meine numerischen MySQL-Werte in PHP als Zeichenfolgen zurückgegeben und wie kann ich das Problem beheben?. 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