Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wstawianie rekordów
Forum PHP.pl > Forum > Przedszkole
potom7
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.
JaRoPHP
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_*.
matlas
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. ?>
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.