Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP + MySQL] Jak odczytać i zapamiętać typ BIGINT?
Forum PHP.pl > Forum > PHP
MySQL
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ę?
erix
Zapisuj tak, jak to robi bcmath - liczby traktowane jako string.
MySQL
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
Mephistofeles
Zapisz każdą jako stringa, i sklej je wszystkie razem. A potem do bazy zapisz.
Orkan
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 ?
Mephistofeles
Miałem na myśli zapisane flagi jako 0-1.
Orkan
tylko pytanie jak pozniej zapisac taki string jako BIGINT ? MySQL sam przeciez nie przekonwertuje tego. Potrzebny jest bcmath.
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-2025 Invision Power Services, Inc.