Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] podwojne rekordy w mysql
zeno
post 15.09.2007, 17:28:28
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.09.2007

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


Witam.

Od niedawna pisze w klasach (ucze sie pisac), do tej pory nie pisalem zadnych wiekszych rzeczy, po prostu php bylo dodatkiem do xhtml. Teraz chce napisac cos lepszego, ale mam pewien problem.

  1. <?php
  2. class baza
  3. {
  4. public $polaczenie;
  5. public $baza;
  6. public $zapytanie;
  7. public $odpowiedz;
  8.  
  9.  
  10. public function __construct()
  11. {
  12. include("./settings/mysql.php");
  13. if(!$this->polaczenie = @mysql_connect($sql['adres'], $sql['user'], $sql['pass']))
  14. {
  15. $this->bladSql($this->polaczenie);
  16. }
  17. if(!$this->baza = @mysql_select_db($sql['baza'], $this->polaczenie))
  18. {
  19. $this->bladSql($this->baza);
  20. }
  21. }
  22.  
  23. public function bladSql($blad)
  24. {
  25. die('tu komunikat bledu, z '.mysql_errno().': '.mysql_error);
  26. }
  27.  
  28. public function __destruct()
  29. {
  30. @mysql_close($this->polaczenie);
  31. }
  32.  
  33. public function zapytaj($zapytanie)
  34. {
  35. $this->odpowiedz = @mysql_query($zapytanie);
  36. // jeszcze komendy do obslugi bledu, wycialem
  37. }
  38.  
  39. // tutaj szereg innych metod ktore opieraja sie na zapytaj(), wiec wycialem
  40.  
  41. }
  42. ?>


Moj problem jest taki - gdy lacze sie za pomoca $sql = new baza a potem korzystam z metody zapytaj(), czy tez robie standardowym mysql_query z takim samym zapytaniem (chodzi o wstawianie rekordow do bazy) dodaje mi 2 identyko rekordy z roznymi identyfikatorami.

Zapytanie wyglada tak:

  1. <?php
  2. // tutaj moja metoda dodaj() ktora wycialem
  3. $co = $sql->dodaj("content","author,text","'pupa','jasia'");
  4. ?>


  1. <?php
  2. // a tu normalne zapytanie
  3. $co = mysql_query("INSERT INTO content (author,text) VALUES ('pupa','jasia')");
  4. ?>


Obie daja to samo, czyli podwojne rekordy.

Zeby nie bylo, obecnie bazuje na przedstawionej klasie, tj z wycietymi fragmentami po to zeby wyeliminowac miejsca potencjalnego bledu. Podejrzewam ze blad jest w konstruktorze (wszystko dziala normalnie jak sie lacze standardowo, bez uzycia klasy), ale nie mam pojecia jaki.

Prosze o wyrozumialosc smile.gif

PS widzialem tez w googlach podobne tematy, ale niestety albo nie odnosily sie w 100% do mojego problemu (np drugi rekord pusty) albo blad lezal gdzie indziej (np. powtorzenia polecen).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
kris2
post 16.09.2007, 11:23:39
Post #2





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 15.08.2007

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


nigdy nie mialem takiego problemy. to dosc dziwne. a jezeli recznie dodasz rekord tez jest podwójny?
Go to the top of the page
+Quote Post
zeno
post 16.09.2007, 15:39:34
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 15.09.2007

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


Nie ma. Jak lacze sie z mysql bez klasy, tez wszystko jest ok. Problem lezy gdzies w samej klasie.
Go to the top of the page
+Quote Post
crunch
post 16.09.2007, 15:59:38
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 20.03.2007
Skąd: ZG

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


hm, skusiłem się na sprawdzenie...
u mnie poszło bez powtórzeń...

do Twojej klasy dopisałem metodę:

  1. <?php
  2. public function dodaj ()
  3. {
  4. $this->zapytaj("INSERT INTO `p_kategoria` (`id`, `nazwa`) VALUES (5, 'mrowki')");
  5. }
  6. ?>


i wywołałem:
  1. <?php
  2. $sql = new baza;
  3. $sql->dodaj();
  4. print $sql->odpowiedz;
  5. ?>


mam tylko 1 wiersz.
może rzeczywiście gdzieś ukryło się drugie zapytanie? ;p
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: 19.07.2025 - 14:46