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:
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!