Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Za żadne skarby nie chce przyjąć zapytania
evolucja
post
Post #1





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


  1. $query = mysql_query("SELECT `id`,`activated` FROM `ll_users` WHERE `username` = 'a' AND `activation_code` = 'b';");

Próbowałem na różne sposoby. W tej postaci nie przyjmie i koniec.
Błąd:
  1. You have an error IN your SQL syntax; CHECK the manual that corresponds TO your MySQL server version FOR the RIGHT syntax TO USE near '' at line 1


W PMA przechodzi bez problemu.


Pierwszy raz się z czymś takim spotkałem..
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
outsider
post
Post #2





Grupa: Zarejestrowani
Postów: 267
Pomógł: 36
Dołączył: 8.08.2008

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


moze sprobuj bez srednika w zapytaniu ?
Go to the top of the page
+Quote Post
darophp
post
Post #3





Grupa: Zarejestrowani
Postów: 309
Pomógł: 20
Dołączył: 13.02.2010
Skąd: Kęty

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


Racja:
Kod
$query = mysql_query("SELECT `id`,`activated` FROM `ll_users` WHERE `username` = 'a' AND `activation_code` = 'b'");
Go to the top of the page
+Quote Post
melkorm
post
Post #4





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Strzelam że w skrypcie PHP masz błąd i zapewne masz składnie podobną do :
  1. $query = mysql_query("SELECT `id`,`activated` FROM `ll_users` WHERE `username` = '$username' AND `activation_code` = '$code';");


Zrób przed zapytaniem var_dump'a na obie zmienne, a zobaczysz że jedna z nich jest pusta (IMG:style_emoticons/default/smile.gif)

Bo o tym prawi błąd że zapytanie wygląda mniej więcej tak:
  1. SELECT `id`,`activated` FROM `ll_users` WHERE `username` = '' AND `activation_code` = ''


Edit:
Up
Treść zapytania może zawierać średnik. Zresztą nawet gdyby nie mogło treść błędu byłaby zupełnie inna.

Ten post edytował melkorm 21.07.2010, 17:18:12
Go to the top of the page
+Quote Post
evolucja
post
Post #5





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Cytat(*OuTSideR* @ 21.07.2010, 17:33:36 ) *
moze sprobuj bez srednika w zapytaniu ?

Jak bez średnika? Co to za różnica? Zresztą, dawanie średnika po każdym zapytaniu jest dobrym nawykiem (IMG:style_emoticons/default/smile.gif)

Cytat(darophp @ 21.07.2010, 18:13:11 ) *
Racja:
Kod
$query = mysql_query("SELECT `id`,`activated` FROM `ll_users` WHERE `username` = 'a' AND `activation_code` = 'b'");

Że co? (IMG:style_emoticons/default/smile.gif)


Cytat(melkorm @ 21.07.2010, 18:15:18 ) *
Strzelam że w skrypcie PHP masz błąd i zapewne masz składnie podobną do :
  1. $query = mysql_query("SELECT `id`,`activated` FROM `ll_users` WHERE `username` = '$username' AND `activation_code` = '$code';");


Zrób przed zapytaniem var_dump'a na obie zmienne, a zobaczysz że jedna z nich jest pusta (IMG:style_emoticons/default/smile.gif)

Bo o tym prawi błąd że zapytanie wygląda mneijwięcej tak:
  1. SELECT `id`,`activated` FROM `ll_users` WHERE `username` = '' AND `activation_code` = ''

A gdzie ty tam zmienne jakieś widzisz? Zresztą, nawet gdyby były zmienne i gdzieś popełnił bym przedszkolny błąd nadpisując je lub kasując, to przecież zapytanie które podałeś w drugim przykładzie, rzekomo, że takie wywala błąd jest przecież jak najbardziej poprawne (IMG:style_emoticons/default/smile.gif)

Doprawdy, tyle projektów w życiu wykonałem z czymś takim się pierwszy raz spotykam. Dodam, że bez części WHERE zapytanie przechodzi bez problemu.

Ten post edytował evolucja 21.07.2010, 17:24:55
Go to the top of the page
+Quote Post
melkorm
post
Post #6





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Cytat
A gdzie ty tam zmienne jakieś widzisz?


Jeżeli w PMA wykonuje się Tobie dobrze to założyłem że masz błąd w skrypcie (IMG:style_emoticons/default/smile.gif) Może go pokażesz?

Cytat
Doprawdy, tyle projektów w życiu wykonałem z czymś takim się pierwszy raz spotykam. Dodam, że bez części WHERE zapytanie przechodzi bez problemu.


Nie wątpię w Twoje umiejętności, odpisujemy bo chcemy pomóc, a Ty napisałeś bo szukasz pomocy, ale rzeczą ludzką jest się mylić i już tyle razy poprawiałem ludziom i współpracownikom literówki że jestem pewien że żadna magia nie wywołała tego błędu, tylko błąd w zapytaniu w skrypcie PHP.
Go to the top of the page
+Quote Post
evolucja
post
Post #7





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Cytat(melkorm @ 21.07.2010, 18:25:19 ) *
Nie wątpię w Twoje umiejętności, odpisujemy bo chcemy pomóc, a Ty napisałeś bo szukasz pomocy, ale rzeczą ludzką jest się mylić i już tyle razy poprawiałem ludziom i współpracownikom literówki że jestem pewien że żadna magia nie wywołała tego błędu, tylko błąd w zapytaniu w skrypcie PHP.

To oczywiste (IMG:style_emoticons/default/winksmiley.jpg) Łapcie skrypt, a raczej samą funkcję:
  1. public function UserActivate($u, $c) {
  2. global $validation_error;
  3. $u = BasicClean($u);
  4. $c = BasicClean($c);
  5. $query = query("SELECT `id`,`activated` FROM `ll_users` WHERE `username` = 'a' AND `activation_code` = 'b'");
  6. $result = mysql_fetch_array($query);
  7. if(count($result) != 1) {
  8. $validation_error['activation']['e'] = true;
  9. } elseif($result['activated'] == 1) {
  10. $validation_error['activation']['aa'] = true;
  11. } else {
  12. $query = query("UPDATE `ll_users` SET `activated` = 1 WHERE `id` = ".$result['id'].";");
  13. $validation_error['activation']['a'] = true;
  14. $validation_error['activation']['u'] = $u;
  15. }
  16. }


Ten post edytował evolucja 21.07.2010, 17:33:31
Go to the top of the page
+Quote Post
melkorm
post
Post #8





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


  1. error_reportin( E_ALL + E_STRICT );


  1. $query = query("UPDATE `ll_users` SET `activated` = 1 WHERE `id` = ".$result['id'].";");


Nie znajduje rekordu, $result['id'] jest puste i sypie błędem (IMG:style_emoticons/default/smile.gif)

  1. var_dump($result);
Go to the top of the page
+Quote Post
evolucja
post
Post #9





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Żadnych błędów więcej po za tym z pierwszego postu.

Czemu teraz uczepiłeś się nie tego zapytania u którego jest problem? (IMG:style_emoticons/default/happy.gif) Problem jest z 5 linijką, nie 12.

Ten post edytował evolucja 21.07.2010, 17:46:28
Go to the top of the page
+Quote Post
melkorm
post
Post #10





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Bo nie widzę innego błędu? a treść Twojego błędu dotyczy zapytania, ale nie ma napisane którego.

Chociaż sprawdzasz to co piszemy? Bo masz definitywnie błąd logiczny.
Go to the top of the page
+Quote Post
evolucja
post
Post #11





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Cytat(melkorm @ 21.07.2010, 18:52:46 ) *
Bo nie widzę innego błędu? a treść Twojego błędu dotyczy zapytania, ale nie ma napisane którego.

Już w pierwszym poście podałem przecież o które zapytanie chodzi (IMG:style_emoticons/default/winksmiley.jpg)
Cytat
Chociaż sprawdzasz to co piszemy? Bo masz definitywnie błąd logiczny.

Tylko, że nic konkretnego nie powiedzieliście. Pomimo tego, że byłem na 100% pewny, że średnik może być to sprawdziłem to.
reporting_all dodałem, zresztą napisałem iż żadnego nowego błędu nie było.

Problem rozwiązany. Brakowało apostrofów w drugim zapytaniu. Dziwne, sądziłem, że dla pól typu INT apostrofy nie są potrzebne a wręcz dodatkowo obciążają bazę która musi zamienić STRING na INT.
Go to the top of the page
+Quote Post
melkorm
post
Post #12





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

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


Nic konkretnego? Hm, spójrzmy, zapytanie masz dobre bo wpisałeś je z PALCA (tak jak wkleiłeś skrypt PHP) więc to zapytanie się wykonuje na 100%.

Mówię że masz błąd logiczny w warunku i moim zdaniem na 99% jest tam błąd, przecież spójrz :
1. Pierwsze zapytanie jest dobre bo jest), chyba że testujesz ze zmiennymi a nam dla świętego spokoju dałeś ze statycznymi ... .
2. Zakładam że select nie znajduje Tobie tego rekordu.
3. Warunek przechodzi do else i update sypie błędem, bo sypnie na pewno gdy $result będzie pusty ... .

I to by się zgadzało dlatego to jest moja diagnoza, niczego więcej Tobie nie powiem bo nie ma tu nic więcej do mówienia ponieważ pod jakąś zmienną nie ma wartości dlatego jest taki komunikat błędu, w dodatku zapytanie:
  1. SELECT `id`,`activated` FROM `ll_users` WHERE `username` = '' AND `activation_code` = '';

jest poprawne (pomyłka w poście wyżej gdzie twierdziłem że nie jest, zapomniałem o apostrofach).
ale zapytanie :
  1. UPDATE `ll_users` SET `activated` = 1 WHERE `id` = ;


Już nie jest, i tylko w tym miejscu może wystąpić błąd składni MySql'a gdy nie znajduje rekordu i ta wartość nie istnieje, lub jest pusta.

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: 23.08.2025 - 16:57