Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Problem z transakcjami
slawek3422
post
Post #1





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


Witam.
Mam pewien problem z transakcjami w MySQL. Mam skrypt, w którym robię zapis do bazy. Zapis ten odbywa się w pętli. Dane zapisują się do różnych tabel. Nie wiem jak zrobić żeby transakcja działała dla wywołania skryptu. Działa mi dla pojedynczej iteracji i jak napotka na problem np w piątej iteracji to te zmiany mi anuluje ale poprzednich nie wycofuje no i robi pozostałe (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
slawek3422
post
Post #2





Grupa: Zarejestrowani
Postów: 142
Pomógł: 7
Dołączył: 3.08.2007
Skąd: śląsk

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


może teraz będzie lepiej:
  1. <?php
  2.  
  3. include('polacz.php');
  4. $nazwa = $_POST['nazwa'];
  5. mysql_query("START TRANSACTION");    
  6.  
  7. $query = mysql_query("SELECT nazwa FROM monitor WHERE nazwa = '$nazwa'");
  8.    if(mysql_num_rows($query) == 0){
  9.        $query = mysql_query("INSERT INTO monitor (id_monitora, nazwa, id_sklep) VALUES (NULL, '$nazwa', 0)");
  10.        $query = mysql_query("SELECT id_monitora FROM monitor WHERE nazwa = '$nazwa'");
  11.            while($row = mysql_fetch_array($query)){
  12.                $id_monitora = $row['id_monitora'];
  13.            }
  14.            
  15.        $kategorie = mysql_query("SELECT * FROM kategorie ORDER BY kolejnosc ASC ");
  16.            while($row = mysql_fetch_array($kategorie)){
  17.                $id = $row['id_kategorii'];
  18.                $kategoria = $row['kategoria'];
  19.                
  20.                    if($_POST["$id"] != 0 && $_POST["$id"."_input"] != null){
  21.                        $error = True;
  22.                        echo "Wybrano wartość z listy i wpisano do selecta";
  23.                    }
  24.                    
  25.            if($_POST["$id"] == 0 && $_POST["$id"."_input"] != null){
  26.                $parametr = $_POST["$id"."_input"];
  27.                $query = mysql_query("SELECT parametr FROM parametry WHERE parametr = '$parametr' AND id_kategorii = $id");
  28.                    if(mysql_num_rows($query) == 0){
  29.                        $query = mysql_query("INSERT INTO parametry (id_parametru, id_kategorii, parametr) VALUES (NULL, $id, '$parametr')");
  30.                        $query = mysql_query("SELECT id_parametru FROM parametry WHERE parametr = '$parametr' AND id_kategorii = $id");
  31.                    
  32.                            while($row = mysql_fetch_array($query)){
  33.                            $id_parametru = $row['id_parametru'];
  34.                            $query = mysql_query("INSERT INTO parametry_monitora (id_parametru_monitora, id_monitora, id_parametru) VALUES (NULL, $id_monitora, $id_parametru)");
  35.                            }
  36.                    
  37.                            if(mysql_errno()) $error = True;
  38.                    
  39.                    }    else    {
  40.                    
  41.                        $query1 = mysql_query("SELECT id_parametru FROM parametry WHERE parametr = '$parametr' AND id_kategorii = $id");
  42.                            while($row = mysql_fetch_array($query1)){
  43.                            $id_parametru = $row['id_parametru'];
  44.                            $query = mysql_query("INSERT INTO parametry_monitora (id_parametru_monitora, id_monitora, id_parametru) VALUES (NULL, $id_monitora, $id_parametru)");
  45.                            }
  46.                    
  47.                            if(mysql_errno()) $error = True;
  48.                    }
  49.            }
  50.        
  51.            if($_POST["$id"] != 0 && $_POST["$id"."_input"] == null){
  52.                echo $_POST["$id"]."<br>";
  53.            }        
  54.        }
  55.    }
  56.    
  57.    if($error){
  58.            @mysql_query("ROLLBACK");
  59.            echo '<div class="err_body">Modyfikacja bazy zakończona niepowodzeniem.</div>';
  60.    
  61.        } else {
  62.            @mysql_query("COMMIT");
  63.            header("Location: index.php");
  64.        }    
  65.        
  66. ?>


commit i rollback są poza jakąkolwiek pętlą
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: 26.12.2025 - 20:30