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 15.07.2014, 18:03:52
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 questionmark.gif
Go to the top of the page
+Quote Post
trueblue
post 15.07.2014, 18:13:17
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

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


  1. `mTowards`=\'"'.$towards.'"\'
?


--------------------
Go to the top of the page
+Quote Post
PiterosWeb
post 15.07.2014, 18:17:50
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. biggrin.gif
Go to the top of the page
+Quote Post
trueblue
post 15.07.2014, 18:28:06
Post #4





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
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 15.07.2014, 18:33:50
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 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 15.07.2014, 18:44:50
Post #6





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
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 15.07.2014, 18:58:50
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 15.07.2014, 19:03:30
Post #8





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
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 15.07.2014, 19:39:33
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ć biggrin.gif

Mimo wszystko Wielkie dzięki za pomoc smile.gif
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: 18.06.2025 - 04:36