Heim >Datenbank >MySQL-Tutorial >Wie rufe ich mit PHP ganzzahlige und numerische Datentypen ordnungsgemäß aus MySQL ab?

Wie rufe ich mit PHP ganzzahlige und numerische Datentypen ordnungsgemäß aus MySQL ab?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-08 21:02:14805Durchsuche

How to Properly Retrieve Integer and Numeric Data Types from MySQL Using PHP?

So rufen Sie ganzzahlige und numerische Datentypen mit PHP korrekt aus MySQL ab

Beim Abfragen einer MySQL-Datenbank mit PHP ist es wichtig, dies sicherzustellen Ganzzahlige und numerische Datentypen werden als solche und nicht als Zeichenfolgen zurückgegeben. Dies ist für die Datenintegrität und Kompatibilität mit anderen Diensten von entscheidender Bedeutung.

Leider wandelt der native PHP-MySQL-Treiber standardmäßig alle Abfrageergebnisse in Zeichenfolgen um. Dieses Problem war Gegenstand vieler Debatten. Einige behaupteten, es handele sich um eine Implementierungsbeschränkung, andere meinten, es sei falsch. Der entscheidende zu berücksichtigende Faktor ist jedoch der verwendete Treiber.

Die Lösung: Verwendung des MySQLnd-Treibers

Um dieses Problem zu beheben, ist es notwendig, vom nativen zu wechseln MySQL-Treiber zum mysqlnd-Treiber. Der mysqlnd-Treiber unterstützt die korrekte Rückgabe ganzzahliger und numerischer Typen.

So installieren und prüfen Sie mysqlnd

Unter Ubuntu können Sie den mysqlnd-Treiber mit den folgenden Befehlen installieren:

sudo apt-get remove php5-mysql
sudo apt-get install php5-mysqlnd
sudo service apache2 restart

Um zu überprüfen, ob mysqlnd verwendet wird, überprüfen Sie die Ausgabe von php -i. Der Abschnitt pdo_mysql sollte jetzt einen Verweis auf mysqlnd enthalten.

PDO-Einstellungen

Stellen Sie außerdem sicher, dass die folgenden PDO-Einstellungen ordnungsgemäß konfiguriert sind:

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

Zurückgegebene Werte

Sobald die Wenn der mysqlnd-Treiber verwendet wird und die entsprechenden PDO-Einstellungen angewendet werden, werden Abfrageergebnisse gemäß den folgenden Regeln zurückgegeben:

  • Gleitkommatypen (FLOAT, DOUBLE) werden als PHP-Floats zurückgegeben.
  • Integer-Typen (INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT) werden als PHP zurückgegeben ganze Zahlen.
  • Festkommatypen (DECIMAL, NUMERIC) werden als PHP-Strings zurückgegeben.

Beispiel

Das folgende Beispiel veranschaulicht das Korrektes Verhalten beim Abrufen ganzzahliger und numerischer Daten:

$pdo = new PDO(...);
$stmt = $pdo->prepare('SELECT * FROM table');
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_OBJ);

var_dump($result);

Dies würde ein Objekt ausgeben mit den folgenden Eigenschaften:

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 rufe ich mit PHP ganzzahlige und numerische Datentypen ordnungsgemäß aus MySQL 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