Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    71

    gestione transazioni in php

    Salve a tutti, sto cercando di capire come vengono gestite le transazioni tra php e mysql.
    L'esempio stupido che sto cercando di fare è questo:
    <?php
    // put your code here
    echo "SONO QUI";
    $host="localhost"; // l'hostname
    $user="root"; // username
    $password="root"; // password
    $database="provaCommitt"; // database


    $db = mysql_connect($host, $user, $password)
    or die ("Impossibile connettersi al server ");
    mysql_select_db($database, $db) //restituisce vero se ci si connette al db di interesse
    or die ("Impossibile connettersi al database $database");
    //inizio le operazioni atomiche
    mysql_quey("SET AUTOCOMMIT=0")or die("errore set autocommitt");
    mysql_query("start transaction") or die("errore start transaction");

    $errore=false;
    echo "
    ERRORE INIZIALE: ";
    echo $errore;
    $query1="insert into padre(idPadre, nomePadre) values (112,'XXX')";
    if (!($dbResult=mysql_query($query1))) {
    $errore=true;
    echo "
    ERRORE PRIMO: ";
    echo $errore;
    }
    $query2="insert into figlio (idFiglio,idPadre,nomeFiglio) values (2,1,'Qui')";
    if (!($dbResult2=mysql_query($query2))) {
    $errore=true;
    echo "
    ERRORE SECONDO: ";
    echo $errore;

    }
    echo "
    ERRORE FINALE: ";
    echo $errore;

    if (!$errore) {
    mysql_query("commit") or die("errore nel commit");
    echo "
    COMMIT EFFETTUATA
    ";
    }
    else {
    mysql_query("rollback") or die("errore nel rollback");
    echo "
    INSERIMENTO NON EFFETTUTATO</br>";
    }


    ?>


    Ma non funziona!

  2. #2
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Pessimo post.

    1) Il codice php si scrive dentro gli appositi tag
    2) "Non funziona" non vuol dire niente. Descrivere cosa succede

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    71
    Ok hai ragione, non funziona nel senso che se è sbagliata la seconda query comunque mi inserisce la prima, senza fare il rollback.

  4. #4
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Il concetto di "Descrivere cosa succede" prevede una risposta più dettagliata.
    Riproviamo: descrivi cosa succede

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    71
    Scusami ma noto un pò un aria da "professore".
    Che cosa intendi per che cosa succede?

    Con lo script che sto facendo, sembra come se se ne fregasse dell rollback e del commit.

    La seconda query ha un errore, messo apposta, mentre la prima no.
    Secondo la logica mi aspetterei che non facesse nessuno dei due inserimenti, ossia che facesse un rollback invece quello che succede è che comunque mi va nel rollback quindi mi stampa INSERIMENTO NON EFFETTUATO ma quando vado nel db trovo la prima riga inserita.

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da dany144
    Che cosa intendi per che cosa succede?

    .......
    quello che succede è che comunque mi va nel rollback quindi mi stampa INSERIMENTO NON EFFETTUATO ma quando vado nel db trovo la prima riga inserita.
    Vedi che se vuoi lo capisci, cosa intendo.
    Le tabelle sono del tipo giusto?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    71
    che cosa intendi per tipo giusto?

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    MySql gestisce diversi tipi di tabelle, fra cui le più usate sono MyIsam e InnoDB. Le MyIsam non gestiscono le transazioni. Se non usi tabelle InnoDB (o BDB) le transazioni non funzionano

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.