Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] podwojne rekordy w mysql
Forum PHP.pl > Forum > Przedszkole
zeno
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).
kris2
nigdy nie mialem takiego problemy. to dosc dziwne. a jezeli recznie dodasz rekord tez jest podwójny?
zeno
Nie ma. Jak lacze sie z mysql bez klasy, tez wszystko jest ok. Problem lezy gdzies w samej klasie.
crunch
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
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.