Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Mysql i rollback (nie działa mi)
MatKus
post
Post #1





Grupa: Zarejestrowani
Postów: 63
Pomógł: 3
Dołączył: 27.08.2008

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


Witam.

Próbuję zrobić sobie prostą klasę dziedziczącą po mysqli, która do polecenia "query" będzie przyjmowała tablicę i wykonywała albo ją cała, albo rollback. I tu pojawia się problem. Oto mój kod:

  1. class class_db extends mysqli
  2. {
  3. var $connected; // czy połączony?
  4. var $last_insert_id; // ostatni insert_id (osobno, bo po commit insert_id jest nieokreślony)
  5. function __construct($host, $login, $pass, $db)
  6. {
  7. parent::__construct($host, $login, $pass, $db);
  8. parent::query('SET NAMES utf8');
  9. if (mysqli_connect_error())
  10. {
  11. $this->connected = false;
  12. } else
  13. {
  14. $this->connected = true;
  15. $this->autocommit(false);
  16. }
  17. }
  18.  
  19. function query($query)
  20. {
  21. if($this->connected)
  22. {
  23. if (!is_array($query))
  24. {
  25. $query=array($query);
  26. }
  27. foreach ($query as $zapytanie)
  28. {
  29. $wynik = parent::query($zapytanie);
  30. if ($this->errno>0) break;
  31. }
  32. if($this->error != '')
  33. {
  34. // błąd zapytania
  35. $this->rollback();
  36. return false;
  37. }
  38. $this->last_insert_id=$this->insert_id; // po commit insert id jest nieokreślony, więc trzeba go zapamiętać przed commitem.
  39. $this->commit();
  40. return $wynik;
  41. }
  42. else
  43. {
  44. // błąd połączenia z bazą
  45. return false;
  46. }
  47. }
  48. }


Problem w tym, że jeśli dam kilka zapytań, to rollback nie wykonuje się (mimo, że dochodzi do tego miejsca w kodzie). Przykładowo, przekażę tablicę z 10 delete'ami i w 5 będzie błąd, to 4 pierwsze nie przywrócą się, po prostu są skasowane i tyle.

Gdzie robię błąd?

Ten post edytował MatKus 13.11.2012, 15:21:32
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 - 03:13