Heim >Datenbank >MySQL-Tutorial >Wie rufe ich ganzzahlige und numerische Spalten als ihre nativen Typen von MySQL in PHP ab?

Wie rufe ich ganzzahlige und numerische Spalten als ihre nativen Typen von MySQL in PHP ab?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-07 05:25:16227Durchsuche

How to Retrieve Integer and Numeric Columns as Their Native Types from MySQL in PHP?

Wie gebe ich ganzzahlige und numerische Spalten von MySQL als ganze Zahlen und Zahlen in PHP zurück?

Stellen Sie bei der Arbeit mit MySQL-Datenbanken in PHP Folgendes sicher Es ist von entscheidender Bedeutung, dass ganzzahlige und numerische Spalten korrekt abgerufen und dargestellt werden. Die PDO-Erweiterung in PHP bietet eine Möglichkeit, dies zu tun, aber es kann problematisch sein, wenn der native MySQL-Treiber nicht verwendet wird.

Warum Integer-Spalten als Strings zurückgegeben werden

Dem nativen MySQL-Treiber fehlt die Unterstützung für die Rückgabe numerischer Werte als Ganzzahlen und Zahlen. Dies bedeutet, dass standardmäßig alle Spalten als Zeichenfolgen abgerufen werden. Selbst wenn das PDO-Flag PDO::ATTR_STRINGIFY_FETCHES auf false gesetzt ist, ändert sich das Verhalten des Treibers nicht.

So beheben Sie das Problem

Die Lösung besteht darin, zum mysqlnd Treiber für PHP. Dieser Treiber unterstützt die Rückgabe ganzzahliger und numerischer Werte in ihren nativen PHP-Typen.

Installation

Um den mysqlnd-Treiber unter Ubuntu zu installieren, können Sie die folgenden Schritte ausführen:

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

Überprüfung

Um zu überprüfen, ob der mysqlnd-Treiber verwendet wird, führen Sie Folgendes aus: php -i. Die Ausgabe sollte nun „mysqlnd“ im Abschnitt pdo_mysql enthalten.

PDO-Einstellungen

Stellen Sie sicher, dass die folgenden PDO-Einstellungen korrekt eingestellt sind:

  • PDO::ATTR_EMULATE_PREPARES sollte sein false
  • PDO::ATTR_STRINGIFY_FETCHES sollte false sein

Zurückgegebene Werte

Mit dem mysqlnd-Treiber werden die folgenden Rückgabetypen verwendet:

  • Gleitkommatypen (FLOAT, DOUBLE): PHP-Floats
  • Ganzzahltypen (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT): PHP-Ganzzahlen
  • Festkommatypen (DECIMAL, NUMERIC): Zeichenfolgen

Beispiel

Nach dem Wechsel zum mysqlnd-Treiber können Sie ganzzahlige und numerische Werte korrekt abrufen:

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);

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

echo $row->integer_col; // 1 (int)
echo $row->double_col; // 1.55 (float)
echo $row->decimal_col; // '1.20' (string)
echo $row->bigint_col; // '18446744073709551615' (string)

Das obige ist der detaillierte Inhalt vonWie rufe ich ganzzahlige und numerische Spalten als ihre nativen Typen von MySQL in PHP ab?. 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