Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z aktualizacją danych w tylko, podkreślam tylko jednej kolumny w tabeli
PiterosWeb
post
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 2
Dołączył: 2.10.2010
Skąd: Piotrków Trybunalski

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


Witajcie
Mam pewien, pewnie banalny problem. Ale męczę się już trochę i na prawdę nie rozumiem dlaczego to nie działa.
Zacznijmy może od tego że mam taką tabelkę w bazie danych:
  1. CREATE TABLE `charactersOnline` (
  2. `accountID` int(10) UNSIGNED NOT NULL,
  3. `characterID` int(10) UNSIGNED NOT NULL,
  4. `time` int(10) UNSIGNED DEFAULT NULL,
  5. `x` tinyint(3) UNSIGNED DEFAULT NULL,
  6. `y` tinyint(3) UNSIGNED DEFAULT NULL,
  7. `z` tinyint(3) UNSIGNED NOT NULL,
  8. `district` char(6) COLLATE utf8_unicode_ci NOT NULL,
  9. `hp` smallint(5) UNSIGNED DEFAULT NULL,
  10. `maxHP` smallint(5) UNSIGNED NOT NULL,
  11. `mp` smallint(5) UNSIGNED DEFAULT NULL,
  12. `maxMP` smallint(5) UNSIGNED NOT NULL,
  13. `attack` smallint(5) UNSIGNED NOT NULL,
  14. `defence` smallint(5) UNSIGNED NOT NULL,
  15. `mTowards` SET('0','1','2','3') COLLATE utf8_unicode_ci NOT NULL DEFAULT '0',
  16. PRIMARY KEY (`accountID`),
  17. UNIQUE KEY `UNIQUE` (`characterID`)
  18. ) ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

I wykonuję na tej tabelce takie zapytanie:
  1. 'UPDATE `charactersOnline` SET `time`="'.time().'", `x`="'.$tmpx.'", `y`="'.$tmpy.'", `z`="'.$c[3].'", `district`="'.$c[4].'", `mTowards`="'.$towards.'" WHERE `characterID`="'.$_GET['cid'].'" LIMIT 1'


I teraz moje pytanie jest takie:
Dlaczego tylko kolumna o nazwie `mTowards` nie chce się aktualizować, tylko ta ponieważ wszystkie inne się zmieniają. Dodawałem nawet za kolumną `mTowards` inną i w niej następowała zmiana.
Uprzedzę kilka pytań:
Próbowałem na sztywno ustawić dane, bez skutku.
Zmienna $towards na pewno ma wartość, taką jak trzeba.
Zmieniałem także typ danych tej kolumny, na TINYINT, bez skutku.
W tym momencie nawet wartość Domyślna, którą jest '0' nie jest wpisywana w tą kolumnę.

No i ostatnia kwestia, z poziomu phpmyadmin czy też MySQL Workbench, mogę wprowadzić zmianę w tej kolumnie.


Wie ktoś może co jest nie tak (IMG:style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
trueblue
post
Post #2





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


  1. `mTowards`=\'"'.$towards.'"\'
?
Go to the top of the page
+Quote Post
PiterosWeb
post
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 2
Dołączył: 2.10.2010
Skąd: Piotrków Trybunalski

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


To na pewno nie, jak już to:
  1. mTowards`=\''.$towards.'\'

ale to też nie działa.
Sprawdziłem twoją teorię, bo już sprawdzam dosłownie wszystko.
Zmieniałem nawet nazwe kolumny, ale to też nic nie daje. (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Tak, tak, masz rację.

Wydrukuj zapytanie na ekran przed jego wykonaniem.
Go to the top of the page
+Quote Post
PiterosWeb
post
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 2
Dołączył: 2.10.2010
Skąd: Piotrków Trybunalski

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


Robiłem już to (IMG:style_emoticons/default/wink.gif)
Oto jedna z opcji
UPDATE `charactersOnline` SET `time`="1405445538", `x`="1", `y`="3", `z`="30", `district`="001001", `mTowards`="0" WHERE `characterID`="2" LIMIT 1
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


Zamień w zapytaniu wszystkie pojedyncze ciapki z podwójnymi.

EDIT:
Mam na myśli oczywiście te:
  1. "UPDATE `charactersOnline` SET `time`='".time()."',


Ten post edytował trueblue 15.07.2014, 18:57:20
Go to the top of the page
+Quote Post
PiterosWeb
post
Post #7





Grupa: Zarejestrowani
Postów: 48
Pomógł: 2
Dołączył: 2.10.2010
Skąd: Piotrków Trybunalski

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


Wiem co masz na myśli ale to samo uzyskam wstawiając zamiast apostrofów \', a to nic nie daje
Go to the top of the page
+Quote Post
trueblue
post
Post #8





Grupa: Zarejestrowani
Postów: 6 809
Pomógł: 1828
Dołączył: 11.03.2014

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


No, to jak uważasz, ja testowałem na mysqli i przy pojedynczych apostrofach wokół wartości jest ok, przy cudzysłowach nie działa.
Problem przy mysqli, korzystając z PDO jest ok.
Go to the top of the page
+Quote Post
PiterosWeb
post
Post #9





Grupa: Zarejestrowani
Postów: 48
Pomógł: 2
Dołączył: 2.10.2010
Skąd: Piotrków Trybunalski

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


Sprawdziłem i nie pomaga, jedyne co się zmieniło, bo trochę kombinowałem i nie ważne czy dam w apostrofach czy w cudzysłowiu to mi wstawia wartość, ale tylko gdy jest na sztwyno, gdy dam jako liczbę czyli bez cudzysłowia czy apostrofu to wstawia mi wartość domyślną.
Próbowałem też rzutowania w PHP na stringa ale to też nic nie daje. :/

Już sobie poradziłem, błąd był głupi. Można powiedzieć że patrzyłem zbyt blisko. Sprawę kopało inne zapytanie, które wykonywane było zaraz po wykonaniu tego.
Przeoczyłem to ponieważ wszystko jest wywoływane w tle, za pomocą AJAX'a, i nie koniecznie jest jedno z drugim powiązane po stronie klienta.

Błąd polegał na tym że wysyłałem drugie rządanie do serwera, które miało na celu zaktualizować tylko tą jedną kolumnę.
I aktualizowało, z tym że przy wysyałniu tego drugiego rządania był problem ponieważ zrobiłem literówkę w nazwie zmiennej i wysłał do serwera 'undefined', dlatego zostawiało puste pole.
Takie małe przypomnienie że czasem trzeba nieco szerzej spojrzeć (IMG:style_emoticons/default/biggrin.gif)

Mimo wszystko Wielkie dzięki za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.12.2025 - 06:16