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
by_ikar
post
Post #2





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


Generalnie to powinieneś dostać notice o niezdefiniowanej zmiennej $value i $name w lini 7 oraz 8. Druga sprawa to jest to że wykonujesz ten execute dwa razy, nie wiem jak ten kod wygląda dalej, no ale właśnie te 2x execute powodują dwukrotne wykonanie tego samego zapytania. Jak chcesz poczytać o PDO, to poczytaj tutaj: http://pl.wikibooks.org/wiki/PHP/Biblioteka_PDO
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(by_ikar @ 29.11.2011, 23:38:13 ) *
Druga sprawa to jest to że wykonujesz ten execute dwa razy, nie wiem jak ten kod wygląda dalej, no ale właśnie te 2x execute powodują dwukrotne wykonanie tego samego zapytania

tak, tylko wykonuje się najpierw zapytanie z 13 (linii), potem 18 i znów z 13 i 18

PS to jest cały kod - specjalnie dałem do testów jak najprostszy aby błąd znaleźć
Go to the top of the page
+Quote Post

Posty w temacie


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: 12.10.2025 - 12:43