Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][MySQL][PHP] wiele wywolan asynchronicznych kontrolera i jego procedury i dziwne wyniki w bazie
Forum PHP.pl > Forum > Przedszkole
koszykarze
Używam biblioteki uzywajacej jQuery (telerik) i mam przypadek w którym jeden po drugim wysylany jest asynchrobicznie ten sam request z innymi parametrami do kontrolera Symfony w którym wywoluję tę samą procedurę mysql robiaca zwykly insert jednego wiersza jednej tabeli.

Z testowymi danymi, tymi samymi, ta operacja za kazdym razem daje inne wyniki, tj zapis w bazie. Tzn jeśli ta operacja ma wywołać 3 razy żądanie do kontrolera i w sumie dodać 3 wiersze, to raz wstawi 3, raz 0, raz 2, 1. Bez żadnego sensu. I za każdym razem ten kontroler nie łapie żadnego exception związanego z bazą. Jest try w ktorym jest execute procedury.


  1. $em = $this->getDoctrine()->getManager()->getConnection();
  2. $query = $em->prepare("CALL document_add_user ( :document_id, :user_id)");
  3. try {
  4. $query->execute([
  5. ":document_id" => intval($request->get('document_id')),
  6. ":user_id" => intval($request->get('user_id')),
  7. ]);
  8. } catch (\Exception $e) {
  9. $msg = "MESSAGE: ".$e->getMessage();
  10. $response = new Response();
  11. $response->headers->set('Access-Control-Allow-Origin', $this->getParameter('ajax_allow_domain'));
  12. $response->send();
  13. return new JsonResponse($msg, 401);
  14. }
  15.  
  16. //$query->closeCursor();
  17.  
  18. $response = new Response();
  19. $response->headers->set('Access-Control-Allow-Origin', $this->getParameter('ajax_allow_domain'));
  20. $response->send();
  21.  
  22. return new JsonResponse("Dodano uzytkownika:.. ")
  23.  
nospor
I nawet jak do bazy wplynie 0 wpisow to jako response otrzymasz 3 razy tekst "Dodano uzytkownika... " ?

ps: czemu w ogole tworzysz procedury na tak banalne akcji jak dodanie banalnego rekordu do bazy?
koszykarze
Jestem teraz poza kodem, ale krótkie googlowanie nie znalazło odpowiedzi na pytanie jak sprawdzić czy procedura insertujaca skutecznie coś wstawila. Gdy tę procedurę uruchamiam w workbench z poprawnymi parametrami to widzę komunikat: 0 rows affected. Mimo ze wstawilo dane do tabeli. Więc ->execute() po skutecznym insercie tez chyba zwróci 0.

->lastInsertId ?
If($query) ?
nospor
王明 是 中国人。
王明 是 学生。
史密斯 是 美国人。
史密斯 是 王明 的 朋友。
史密斯 是 律师。
koszykarze
A ja dzisiaj na trzeźwo.
nospor
Ja tez. Ale skoro nie potrafisz odpowiedziec na moj, ktory napisalem do ciebie po polsku, to pomyslalem ze sprobuje po chinsku. Zadzialalo polowicznie - przynajmniej zauwazyles ze cos do ciebie napisalem
koszykarze
W twojej odpowiedzi odczytałem sugestię, że powinienem dodać warunek sprawdzajacy czy procedura dodała wiersz, bo kontroler w każdym wypadku zwróci mi pozytywny response.
nospor
Czyli moj polski to dla ciebie jak chinski...

Zadalem dwa proste pytania w moim poscie i chcialbym bys na nie odpowiedzial a nie doszukiwal sie ukrytych znakow
koszykarze
Cytat(nospor @ 29.08.2018, 10:04:10 ) *
I nawet jak do bazy wplynie 0 wpisow to jako response otrzymasz 3 razy tekst "Dodano uzytkownika... " ?

Haha dopiero teraz zauważyłem ze to jest pytanie. Jutro sprawdzę.
nospor
Na odpowiedz na drugie pytanie tez musze czekac do jutra? Tez juz nie pamietasz czemu tworzysz procedury?
koszykarze
W języku angielskim zawsze na początku pytania jest słowo wskazujące ze bedzie pytanie. Ma to sens.

Procedury? Taką dostalem sugestię z góry.

A jeśli chodzi o 1 pytanie. Tak, przypominam sobie ze ten kontroler zawsze zwracał "Dodano...".
nospor
W jezyku polskim na koncu zdania daje sie "?" ktore dosc mocno sugeruje, ze to pytanie....

Nie mogles wyperswadowac gorze ze to glupi pomysl? wiesz, programisci czasami tez maja cos do powiedzenia...
koszykarze
Cytat(nospor @ 29.08.2018, 22:26:47 ) *
W jezyku polskim na koncu zdania daje sie "?" ktore dosc mocno sugeruje, ze to pytanie....
ale gdy stoi po kilku znakach interpunkcyjnych a szczególnie po cudzyslowiu to mózg może to zignorować jako część cytatu. Mój mózg zignorowal.



Góra to programista i główny bazodanowiec. Ja takim nie perswaduje jesli nie jestem pewien na 100%.
Pyton_000
Pokaż ciało tej procedury. No chyba że ona zawiera dziesiątki innych zapytań to wtedy ma to może i sens
nospor
Cytat
Góra to programista i główny bazodanowiec. Ja takim nie perswaduje jesli nie jestem pewien na 100%.

To moze chociaz zapytac tak z ciekawosci by wiedziec po co, dlaczego? Tak by sie czegos nauczyc a nie bez sensu walic w te klawiature? Sam chetnie sie dowiem co takiego zawiera ta procedura ze musi to byc wlasnie procedura
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.