Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] sprawdzanie czy zapytanie się wykonało
Forum PHP.pl > Forum > Przedszkole
andrzejt17
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
nospor
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ć.
andrzejt17
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ę?
nospor
  1. if ($queryA && $queryB) echo 'Jupi! Jeden worek!';
  2. else echo 'Nie Jupi.'
andrzejt17
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?
wizu
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.
nospor
No jeśli najpierw wykonujesz a potem dopiero sprawdzasz....
andrzejt17
@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?
nospor
Przykładowo gdy uszkodzi ci się tabela comxment_log to w 100% przypadkach tak będziesz miał smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.