Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PDO] dublowanie zapytań
r4xz
post
Post #1





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


witam,
posiadam dziwny problem (choć śmiem wątpić, że jednak go nie posiadam... ani słowa na ten temat w google)

wysyłam polecenie
  1. INSERT INTO users ( name, password ) VALUES ( 'test1', 'test1' )


no i szlak by to trafił - zawsze wykonuje się 2 razy.
dam 2 zapytania pod rząd - wykona się jedno, wykona się drugie - a potem lecą duplikaty...

jakieś pomysły?

aha... pewno spytacie o kod.
postanowiłem przekopiować z manuala:
  1. <?php
  2. $dsn = "mysql:host=localhost;dbname=test";
  3. $username = 'root';
  4. $password = null;
  5. $dbh = new PDO( $dsn, $username, $password );
  6. $stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
  7. $stmt->bindParam(':name', $name);
  8. $stmt->bindParam(':value', $value);
  9.  
  10. // insert one row
  11. $name = 'one';
  12. $value = 1;
  13. $stmt->execute();
  14.  
  15. // insert another row with different values
  16. $name = 'two';
  17. $value = 2;
  18. $stmt->execute();
  19. ?>

otrzymuję 4 nowe wpisy, one => 1 (id 1), two => 2 (id 2), one => 1 (id 3), two => 2 (id 4)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





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




Cytat
no i szlak by to trafił - zawsze wykonuje się 2 razy.
dam 2 zapytania pod rząd - wykona się jedno, wykona się drugie - a potem lecą duplikaty...

jakieś pomysły?
Odpowiedź jest banalnie prosta. Wykonujesz kod 2 razy. Albo strona ci się odswieza, albo kupa innych rzeczy powodujących wykonanie tego kodu dwa razy.

Były dziesiatki takich "problemów" na forum, ludzie zawsze się zastrzegali że robią to tylko raz, ale zawsze się okazywalo, że robią to jednak dwa razy, zazwyczaj nieswiadomie, posrednio z jakiegoś innego powodu.
Go to the top of the page
+Quote Post
r4xz
post
Post #3





Grupa: Zarejestrowani
Postów: 673
Pomógł: 106
Dołączył: 31.12.2008

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


Cytat(nospor @ 30.11.2011, 21:02:44 ) *
Albo strona ci się odswieza, albo kupa innych rzeczy powodujących wykonanie tego kodu dwa razy.

trafne spostrzeżenie, tylko teraz pytanie czemu przy otwieraniu strony przez przeglądarkę wykonuje się 2 razy (testowane pod Operą, IE, FF), ale jak już wyśle żądanie w sposób "inszy" (bez ingerencji okna przeglądarki) działa poprawnie?

póki co mam przynajmniej zajęcie na nudne wieczory aby to wyczaić - a nóż ustawienia apache/php czy jeszcze inne cuda tworzą takie herezje... tego to pewno najstarsze kaszuby nie wiedzą (IMG:style_emoticons/default/wink.gif)

-edit-
tak mnie jeszcze zastanawia, gdyby mi odświeżało to id tych rekordów (PDO::lastInsertId) dostałbym najświeższe - a tak się jednak nie dzieje

Ten post edytował r4xz 30.11.2011, 22:24:34
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 12.10.2025 - 21:10