Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wstawianie rekordów, wszystko albo nic
potom7
post
Post #1





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

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


Mam pytanie dodaje rekordy do różnych tabel(MySQL) w jednym pliku. Jak zrobić aby po nieudanej próbie wpisania do jednej tabeli wszystkie wpisy zostały anulowanie. Tak aby wpisało się wszystko albo nic.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
JaRoPHP
post
Post #2





Grupa: Zarejestrowani
Postów: 675
Pomógł: 15
Dołączył: 7.11.2004
Skąd: Katowice

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


Zastosuj tzw. TRANSAKCJE.
Tabela MySQL musi mieć typ InnoDB, mam nadzieję, że poniższy schematyczny skrypcik Ci pomoże:
  1. <?php
  2. $err = false;
  3. $db = mysqli_connect($server, $user, $pass);
  4. mysqli_select_db($db, $table);
  5. mysqli_query($db, 'BEGIN');
  6.  
  7. // pozostałe zapytania; w przypadku nie wykonania zmieniasz $err na true, np:
  8. mysqli_query("INSERT INTO tabela VALUES('1','2')") or $err = true;
  9.  
  10. if($err) {
  11. mysqli_query($db, 'ROLLBACK');
  12. } else {
  13. mysqli_query($db, 'COMMIT');
  14. }
  15. ?>
Zauważ, że używam mysqli_*, a nie mysql_*.

Ten post edytował JaRoPHP 1.12.2006, 11:26:11


--------------------
Kto pyta, nie błądzi...
Kto zbłądził, ten pyta...
Go to the top of the page
+Quote Post
matlas
post
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 26.12.2006
Skąd: Wrocław

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


tylko jak uzywasz mysqli robi to sie mniej wiecej tak

  1. <?php
  2. mysqli_autocommit($db_connect, FALSE); 
  3. $query1 = "INSERT ...;";
  4. $result1 = @mysql_query($query1);
  5.  
  6. $query2 = "INSERT...;"; 
  7. $result2 = @mysql_query($query2);
  8.  
  9. if($result1 && $result2)
  10. {
  11. mysqli_commit($db_connect);// zatwierdzenie transakcji
  12. }
  13. else
  14. {
  15. mysqli_rollback($db_connect); // cofniecie transakcji!!
  16. }
  17. ?>


--------------------
Zapraszam na bloga: http://matlas.obsysa.net/
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 Aktualny czas: 22.08.2025 - 02:28