Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z Incorrect integer value
mrm
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 18.06.2005
Skąd: inąd

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


Witam postanowiłem zaktualizować swój serwer www (lokalny) do wersji phpmyadmin-a 2.11.4 i mysql-a do 5.0.45

Niestety pojawiły się problemy z bazą danych:

1) dotyczące kodowania (udało się rozwiązać)

2) dotyczące typu 'integer'.

Mam pewien system (który działał prawidłowo na starszej bazach mysql 3..,4..) teraz pojawia się problem przy 'insercie' danych. Mam w tablicy pole 'value' typu int o długości 11 null domyślnie 0, gdy wprowadzam wartość w formularzu wszytko działa ok, natomiast gdy pozostawiam pole puste pojawia się błąd bazy danych Incorrect integer value,

Bardzo zależy mi na tym aby pole to mogło być puste, jedyne co udało mi się wymyślić i działa to zmienić typ pola na "var" ale to nie jest rozwiązuje problemu.


--------------------
'
Go to the top of the page
+Quote Post
nevt
post
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%)
-----


błąd się pojawia prawdopodobnie dlatego, że próbujesz przypisać do tego pola pusty łańcuch znakowy (to co dostajesz z formularza). powinieneś podstawiać stałą NULL (przy UPDATE) lub pomijać to pole przy INSERT, np.
  1. UPDATE tabela SET pole_int = '' WHERE ... - wyskoczy błąd
  2. INSERT INTO tabela (pole_txt, pole_int) VALUES ('', '') - wyskoczy błąd
  3.  
  4. UPDATE tabela SET pole_int = NULL WHERE ... - powinno BYć ok
  5. INSERT INTO tabela (pole_txt) VALUES ('');

czyli musisz sprawdzać, co przyszło z formularza i dla pustego pola odpowiednio modyfikować zapytanie...


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

-
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
mrm
post
Post #3





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 18.06.2005
Skąd: inąd

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


podejrzewam że to spokojnie pomoże (jeszcze nie sprawdzałem) jednak wolałbym rozwiązać problem w nieco inny sposób ... tzn nie chciałbym modyfikować moich skryptów (system jest dosyć duży, wiele formularzy wiele operacji na bazie) zależałoby mi aby zmodyfikować tak bazę danych aby nie trzeba było ingerować w kod ... o ile to możliwe


--------------------
'
Go to the top of the page
+Quote Post
nevt
post
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%)
-----


tak się nie da - albo rybki albo akwarium - z jednej strony piszesz, że chcesz bazę (pole) zostawić bez zmian (czyli typ INTEGRER NULL) i np. zmiana na VARCHAR nie wchodzi w grę. z drugiej strony piszesz, że ze zmianą kodu w PHP jest za dużo zachodu. więc chciałbyś jakoś tajemniczo i magicznie, żeby pusty string sam zamieniał się w NULL albo żeby typ CHAR pasował do pola INT. Jeżeli nie chcesz niczego zmieniać, poszukaj hostingu z jakąś bardzo starą wersją MySQL ...


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

-
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
kitol
post
Post #5





Grupa: Zarejestrowani
Postów: 162
Pomógł: 26
Dołączył: 19.01.2007

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


Czy w tym przypadku nie pomógłby trigger zamieniający pusty string na nulla?
Go to the top of the page
+Quote Post
nevt
post
Post #6





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

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


pomyślełem o tym samym i sprawdziłem wczoraj - niestety - typy pół są porównywane jeszcze zamim odpala się trigger before - wywalany jest błąd a trigger się nawet nie odpala... zupełnie inna kwestia, to niekonsekwencja zespołu MySQL - skoro już jest kowersja 'w locie' ze string na int to generowanie błędu (zamiast ostrzezenia) dla pustego stringu jest niezrozumiale...


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

-
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

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: 21.08.2025 - 07:39