Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP + MySQL] Jak odczytać i zapamiętać typ BIGINT?
MySQL
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 3.06.2008

Ostrzeżenie: (0%)
-----


Niby pytanie jest proste ale... ;)

Wykonałem taki test:
Wiedząc, że typ BIGINT w bazie MySQL zajmuje 8 bajtówi przyjmuje wartości od [0, 18446744073709551615] napisałem taki skrypt:

  1. <?php
  2.   $liczba1 = 18446744073709551614;   // maksymalna wartosc w typie BIGINT UNSIGNED - 1
  3.   $liczba2 = 18446744073709551615;   // maksymalna wartosc w typie BIGINT UNSIGNED
  4.  
  5.   if($liczba1 == $liczba2)  
  6.   {  
  7.      echo 'Sa rowne.';  
  8.   }  
  9.   else  
  10.   {  
  11.      echo 'Sa rozne.'; 
  12.   }  
  13. ?>

I W wyniku otrzymuję napis, że są równe :-/
To moje pytanie jest takie. Jak poprawnie odczytać z bazy danych i zapisać do niej typ BIGINT skoro PHP ma problem z przyjmowaniem takich dyżych liczb?

Edit:

Jak odczytać to jakoś działa (ku memu wielkiemu ździwieniu!). Zapisałem do bazy największą liczbę w tym typie (ręcznie, beż skryptu PHP) i odczytuje się poprawnie.

Ale nadal z zapisywaniem jest problem, bo jak zapisać do bazy taką dużą liczbę?

Ten post edytował achaja 7.03.2009, 21:06:18


--------------------
Pozdrawiam serdecznie
Krzysiek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Zapisuj tak, jak to robi bcmath - liczby traktowane jako string.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
MySQL
post
Post #3





Grupa: Zarejestrowani
Postów: 71
Pomógł: 4
Dołączył: 3.06.2008

Ostrzeżenie: (0%)
-----


Pomysl rozumiem ale wykonac nie potrafie.

Zalozmy, ze jest formulaz z 64 sekcjami. Kazda sekcja sklada sie z dwoch pol typu radio. Rownie dobrze mozna to utozsamic z ciagiem 64 bitowym, gdzie kazdy bit jest tak naprawde flaga binarna.

Jak zrobic aby te 64 flagi binarne polaczyc w jedna liczbe 64 bitowa i zapisac do tabeli, w ktorej znajduje sie kolumna z typem BIGINT akurat czekajaca na taka liczbe. Mecze sie z tym juz pare dni i nie wiem jak to wykombinowac sadsmiley02.gif


--------------------
Pozdrawiam serdecznie
Krzysiek
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #4





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Zapisz każdą jako stringa, i sklej je wszystkie razem. A potem do bazy zapisz.
Go to the top of the page
+Quote Post
Orkan
post
Post #5





Grupa: Zarejestrowani
Postów: 55
Pomógł: 4
Dołączył: 19.05.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


a to czytales?
http://dev.mysql.com/tech-resources/articl...t-datatype.html

EDIT:
albo uzyj zwyklej tablicy PHP do prostego przechowywania stanu wszystkich checkboksow...
operacje na bitach sa dobre jedynie kiedy porownujesz aktualny stan ze zdefiniowaną matrycą (logiczne AND) a taka funkcjonalnosc Tobie nie jest chyba potrzebna tutaj? to sie stosuje np. zeby sprawdzic uprawnienia usera w zaleznosci do jakiej grupy nalezy np.

$grupy = 2 + 4 + 32;
if($grupy & 16) // nie nalezy


PS. @Mephistofeles: to Twoim zdaniem 40 + 40 = 4040 ?

Ten post edytował Orkan 17.03.2009, 14:10:41


--------------------
The fastest app with PHP: <?php die('Hello World'); ?>
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #6





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

Ostrzeżenie: (0%)
-----


Miałem na myśli zapisane flagi jako 0-1.

Ten post edytował Mephistofeles 17.03.2009, 13:38:08
Go to the top of the page
+Quote Post
Orkan
post
Post #7





Grupa: Zarejestrowani
Postów: 55
Pomógł: 4
Dołączył: 19.05.2003
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


tylko pytanie jak pozniej zapisac taki string jako BIGINT ? MySQL sam przeciez nie przekonwertuje tego. Potrzebny jest bcmath.


--------------------
The fastest app with PHP: <?php die('Hello World'); ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 05:53