Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kolumna typu bigint, po select'ie inna wartość
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
phpeff
Witam,
Mam bazę danych i tabele na serwerze MSSQL, gdzie jedna z kolumn (id) jest typu (bigint, null) i są do niej zapisane wartości typu:
2000320001019000000,
2000423001021000000.

Do pobrania zawartości używam skryptu:
  1. $dbh = new PDO ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw");
  2. } catch (PDOException $e) {
  3. echo "Failed to get DB handle: " . $e->getMessage() . "\n";
  4. }
  5. $stmt = $dbh->prepare("SELECT * FROM table_1");
  6. $stmt->execute();
  7. while ($row = $stmt->fetch()) {
  8. print_r($row);
  9. }
  10. unset($dbh); unset($stmt);

W wyniku, dla pola id otrzymuję wartości, dość dziwne:
Array ( [id] => 2.00032000102e+18 [0] => 2.00032000102e+18
Array ( [id] => 2.000083003375e+18 [0] => 2.000083003375e+18
Array ( [id] => 2.000531010747e+18 [0] => 2.000531010747e+18

O co tutaj chodzi? Dlaczego jest to tak konwertowane?
Lion
Wartość wygląda poprawnie, wykładnik się zgadza. Sprawdź var_dumpem czy to jest integer czy string.
sabat24
Obstawiałbym float. Jeśli chcesz mieć wartość "normalną" musisz zrzutować to na stringa. Strzelałbym w coś takiego:

  1. SELECT CAST(ID AS VARCHAR)


albo na poziomie php
  1. $ID = gmp_init($your_id_as_string_or_int);
  2. $IDstr = gmp_strval($ID;
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.