Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] sprawdzanie czy zapytanie się wykonało
andrzejt17
post 22.08.2011, 15:22:15
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.06.2009
Skąd: Wrocław

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


Witam,

Nurtuje mnie jedna rzecz w php i mysql. Od razu zobrazuje sprawę:
  1. if($_GET['rating'] == 'add') {
  2. @mysql_query("UPDATE comment SET reputation=reputation + 1 WHERE id='$postID'");
  3. @mysql_query("INSERT INTO comxment_log (commentID, userID, type) VALUES ('$postID', '$userID', '1')");
  4. showMessage('postRateAddSucces', 'green');
  5. } elseif($_GET['rating'] == 'sub') {
  6. @mysql_query("UPDATE comment SET reputation=reputation - 1 WHERE id='$postID'");
  7. @mysql_query("INSERT INTO comment_log (commentID, userID, type) VALUES ('$postID', '$userID', '0')");
  8. showMessage('postRateSubSucces', 'green');
  9. }


Nie wiem, czy przed zwróceniem komunikatu przez funkcję showMessage() przypisać zapytania do zmiennych i sprawdzać w if() czy mają wartości true.

  1. if($_GET['rating'] == 'add') {
  2. $queryA = @mysql_query("UPDATE comment SET reputation=reputation + 1 WHERE id='$postID'");
  3. $queryB = @mysql_query("INSERT INTO comxment_log (commentID, userID, type) VALUES ('$postID', '$userID', '1')");
  4. ($queryA && $queryB) ? showMessage('postRateAddSucces', 'green') : showMessage('FAAAAAIL', 'green');
  5. } elseif($_GET['rating'] == 'sub') {
  6. $queryA = @mysql_query("UPDATE comment SET reputation=reputation - 1 WHERE id='$postID'");
  7. $queryB = @mysql_query("INSERT INTO comment_log (commentID, userID, type) VALUES ('$postID', '$userID', '0')");
  8. ($queryA && $queryB) ? showMessage('postRateSubSucces', 'green') : showMessage('FAAAAAIL', 'green');
  9. }


Ma to jakiś w ogóle sens? Jak to jest z tymi zapytaniami, jeśli poprawnie sformowałem obydwa zapytania to jest jakaś szansa, że tylko jedno z nich mi się wykona? Rzecz jasna potrzebuje obydwóch.

Pozdrawiam i czekam na odpowiedzi smile.gif
Go to the top of the page
+Quote Post
nospor
post 22.08.2011, 15:23:48
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Nie wiem, czy przed zwróceniem komunikatu przez funkcję showMessage() przypisać zapytania do zmiennych i sprawdzać w if() czy mają wartości true.
No wypadałoby

Cytat
, jeśli poprawnie sformowałem obydwa zapytania to jest jakaś szansa, że tylko jedno z nich mi się wykona? Rzecz jasna potrzebuje obydwóch.
Oczywiście, że może tak się zdarzyć.


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
andrzejt17
post 22.08.2011, 15:25:36
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.06.2009
Skąd: Wrocław

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


Cytat
Oczywiście, że może tak się zdarzyć.

Rozumiem, że nie ma możliwości upchania tego w jeden worek, żeby sprawdzić, czy obydwa zapytania wykonały się?
Go to the top of the page
+Quote Post
nospor
post 22.08.2011, 15:26:46
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




  1. if ($queryA && $queryB) echo 'Jupi! Jeden worek!';
  2. else echo 'Nie Jupi.'


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
andrzejt17
post 22.08.2011, 15:28:10
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.06.2009
Skąd: Wrocław

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


Mimo tego worka może się wykonać np. tylko queryA, wyświetli błąd ale mimo tego jedno z zapytań będzie wykonane, tak?

Jest jakiś lepszy sposób na załatwienie tego?

Ten post edytował andrzejt17 22.08.2011, 15:28:45
Go to the top of the page
+Quote Post
wizu
post 22.08.2011, 15:29:10
Post #6





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Jeżeli chcesz mieć pewność, że albo poprawnie wykonają się oba zapytania, albo żadne się nie wykona, to zainteresuj się "transakcjami SQL", najwygodniej przy wykorzystaniu PDO.
Go to the top of the page
+Quote Post
nospor
post 22.08.2011, 15:30:19
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No jeśli najpierw wykonujesz a potem dopiero sprawdzasz....


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
andrzejt17
post 22.08.2011, 15:48:36
Post #8





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.06.2009
Skąd: Wrocław

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


@wizu - i właśnie ta odpowiedź mnie satysfakcjonuje. Jeśli to jedyna opcja to właśnie z niej skorzystam smile.gif

Pytanie jeszcze; Jak często zdarza się taki ewenement, że z dwóch zapytań wykona się jedno?
Go to the top of the page
+Quote Post
nospor
post 22.08.2011, 15:49:51
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przykładowo gdy uszkodzi ci się tabela comxment_log to w 100% przypadkach tak będziesz miał smile.gif


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

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 13.06.2025 - 10:18