Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> bigint i php
flashdev
post 9.01.2009, 17:07:50
Post #1





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Jak najlepiej dodać daną bigint (64 bit) do tabeli mysql, skoro php obsługuje maksymalnie 32-bitowe liczby?
Trzymać ją w stringu w php a następnie rzutować na bigint w mysql, czy moze da się przekazać mysql`owi dwie liczby typu int a mysql wykona coś typu: liczba1<<32 + liczba2


--------------------
Go to the top of the page
+Quote Post
rzymek01
post 9.01.2009, 22:14:41
Post #2





Grupa: Zarejestrowani
Postów: 592
Pomógł: 62
Dołączył: 3.08.2006

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


dużą liczbę możesz trzymać w stringu (pomocna może byc biblioteka BCMath), a MySQL to już chyba sam sobie przekonwertuje jak mu w zapytaniu dasz stringa biggrin.gif


--------------------
:]
Go to the top of the page
+Quote Post
flashdev
post 9.01.2009, 23:49:30
Post #3





Grupa: Zarejestrowani
Postów: 812
Pomógł: 117
Dołączył: 2.12.2008

Ostrzeżenie: (10%)
X----


Sam nie wiem czy takie rzutowanie na string, a potem na liczbę jest sensowne.


--------------------
Go to the top of the page
+Quote Post
krowal
post 11.01.2009, 13:38:28
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


A nie możesz po prostu ustawić typu pola w tabeli na BIGINT ? zgodnie z manualem MySQL powinno Ci to dać możlowość zapisywania liczb 64 bity (unsigned) lub ze znakiem 63 bity.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
Crozin
post 11.01.2009, 19:51:15
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Możesz trzymać to w stringu, gdyż zapytanie SQL to string. Zwróć uwagę, że w przykładowym
  1. <?php
  2. mysql_query('BLAH BLAH abc = 123456789012345678 BLAH BLAH;');
  3. ?>
Nie ma tak naprawdę żadnej liczby - jest jedynie tekst, z punktu widzenia PHP.
Go to the top of the page
+Quote Post
krowal
post 11.01.2009, 22:21:04
Post #6





Grupa: Zarejestrowani
Postów: 561
Pomógł: 72
Dołączył: 15.11.2006

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


No proszę Ciebie, nie mów, że nie ma różnicy pomiędzy danymi liczbowymi a tekstowymi trzymanymi w bazie smile.gif
Aż pomyślałem, że pokaże na najprostszym przykładzie:


Tabela z danymi w BIGINT:
  1. --
  2. -- Struktura tabeli dla `test2`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `test2` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `test` bigint(20) NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
  10.  
  11. --
  12. -- Zrzut danych tabeli `test2`
  13. --
  14.  
  15. INSERT INTO `test2` (`id`, `test`) VALUES
  16. (1, 8223372036854775807),
  17. (2, 9);

Tabela z danymi w VARCHAR:
  1. --
  2. -- Struktura tabeli dla `test3`
  3. --
  4.  
  5. CREATE TABLE IF NOT EXISTS `test3` (
  6. `id` int(11) NOT NULL AUTO_INCREMENT,
  7. `test` varchar(64) NOT NULL,
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
  10.  
  11. --
  12. -- Zrzut danych tabeli `test3`
  13. --
  14.  
  15. INSERT INTO `test3` (`id`, `test`) VALUES
  16. (1, '8223372036854775807'),
  17. (2, '9');

Jak widać dane są takie same w dwóch tabelach. Spróbuj teraz wykonać na obu tabelach takie zapytanie:
  1. SELECT * FROM testX ORDER BY test

Jeśli nie widzisz różnicy w wynikach to przykro smile.gif
Każdy typ zmiennych w php ma swój odpowiednik w MySQL i tego się należy trzymać i nie kombinować, w końcu po coś zostało to wymyślone.


--------------------
Nawet świnka może wejść na drzewo kiedy jest chwalona :)
Go to the top of the page
+Quote Post
.radex
post 11.01.2009, 22:48:20
Post #7





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

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


Cytat
Każdy typ zmiennych w php ma swój odpowiednik w MySQL i tego się należy trzymać i nie kombinować, w końcu po coś zostało to wymyślone.


ale nie wszystko można zrobić intem! Ja nie widzę problemu w trzymaniu liczb w stringach. Można je przecież i tak obrabiać za pomocą funkcji BC Math tudzież GMP


--------------------
blog | Tadam — minutnik do Pomodoro na Maka :)
Go to the top of the page
+Quote Post
Crozin
post 12.01.2009, 16:00:45
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
No proszę Ciebie, nie mów, że nie ma różnicy pomiędzy danymi liczbowymi a tekstowymi trzymanymi w bazie
Ale tego nigdy nigdzie nie napisałem winksmiley.jpg Oczywiście, że pomiędzy INT a VARCHAR jest różnica (są to dwa kompletnie inne typy przecież). Ale z punktu widzenia PHP przy wprowadzaniu (bo o to pytał autor) danych używa się jednego stringa. To, że przy pobieraniu danych jest już różnica to inna bajka. winksmiley.jpg
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 Wersja Lo-Fi Aktualny czas: 12.06.2025 - 20:09