Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> longtext i problem z mysql_field_len()
be2k
post 25.10.2007, 23:34:15
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


witam

mysql_field_len() zwraca dlugosc danego pola w tabeli. jesli pole jest typu longtext to funkcja zwraca wartosc -1. dla pola text i mediumtext zwraca odpowiednie wartosci czyli odpowiednio 65535 i 16777215. czy ktos z Was sie spotkal z takim problemem?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
nevt
post 26.10.2007, 06:52:43
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


to nie problem, tylko konwersja typów danych.

field len dla longtext = max unsigned int (bez znaku) - maksymalna możliwa wartość dla long int, ale php nie ma takiego typu, więc konwertuje w locie do signed int (ze znakiem) stąd wychodzi -1...


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

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
be2k
post 26.10.2007, 07:13:26
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


to jak sobie z tym poradzic w takim razie?
Go to the top of the page
+Quote Post
nevt
post 26.10.2007, 08:25:44
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


a spróbuj wymusić konwersję do string lub float na przykład...
czyli $len = (string)field_len() lub $len = (float)field_len()

Nie jestem pewien, czy zadziała, nie mam w tym momencie dostępu do bazy żeby sprawdzić... A poza tym, to jest jedyny przypadek kiedy dostajesz -1 - więc możesz odpowiednio skonstruować sobie warunek i też będzie dobrze... Napisz po co sprawdzasz ten parametr - potrzebujesz go wyświetlić, czy tylko wiedzieć że to bardzo dużo danych...?

Ten post edytował nevt 26.10.2007, 08:27:07


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

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
L_Devil
post 26.10.2007, 08:31:29
Post #5





Grupa: Zarejestrowani
Postów: 195
Pomógł: 0
Dołączył: 13.04.2004
Skąd: Łódź

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


Możesz rzutować na usigned int:

$dlugosc = sprintf("%u", field_len());


--------------------
Językiem którym najlepiej operują wszyscy programiści są przekleństwa.
Go to the top of the page
+Quote Post
be2k
post 26.10.2007, 08:56:19
Post #6





Grupa: Zarejestrowani
Postów: 40
Pomógł: 2
Dołączył: 14.07.2006

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


dzieki - rzutowanie na unsigned int pomoglo.

a potrzebowalem tego do cmsa, przy wprowadzaniu danych system sprawdza jaka jest maksymalna dlugosc danego pola w edytowanej tabeli i ewentualnie ucina wprowadzone dane.
problem bardzo dziwny, bo na serwerze firmy w ktorej obecnie pracuje jest (MySQL 5.0, php 4.3.10) ta metoda o ktorej napisalem zwraca dla pola 'longtext' wartosc 16 777 215 czyli dlugosc pola 'mediumtext'. po przeniesieniu serwisu na serwery home.pl (MYSQL 5.0 i PHP 5.0.x) pojawil sie wlasnie taki problem ze dane po edycji nie byly zapisywane. okazalo sie wlasnie ze problem dotyczy pol 'longtext' i tego ze mysql_field_len() zwraca -1.
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: 25.07.2025 - 01:05