Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Commit e Rollback

  1. #1

    Commit e Rollback

    Buon giorno a tutti, ho un serio problema a parte studiare di più :|
    Dopo l'esecuzione dell'insert in TBUTENTI faccio una select per estrapolare l'id_utente dalla stessa tabella per poi inserire questo id_utente nella TBREGISTRAZIONE.
    In pratica
    1) insert in TBUTENTI
    2) Select in TBUTENTI per estrapolare l'id_utente
    3) insert in TBREGISTRAZIONE dell'id_utente, per creare subito dopo la mail da inviare all'utente per confermare la registrazione.

    Il problema è che, a volte la select è come se non viene eseguita, perchè l'id_utente è uguale a 0(zero).Impossibile perchè avendo appena inserito i dati è stato generato sicuramente l'id_utente, essendo un campo autoincrement per cui non me lo spigo.

    Questa è la pagina:
    Codice PHP:
    $sql =    "INSERT INTO TBUTENTI ("
                                    
    ."UserName, Pwd, Cognome, Nome, dRegistrazione, "
                                    
    ."  ) VALUES ("
                                    
    ." \"".$TxtUserName."\""
                                    
    .", \"".$cPassword."\""
                                    
    .", \"".$txtCognome."\""
                                    
    .", \"".$txtNome."\""
                                    
    .", \"".date("Y-m-d G:i:s")."\""
                                    
    ."  )";
                            
    $rsUsermysql_query($sql) or die ("Impossibile connettersi!" mysql_error());


                            
    //********SPAZIO PER REGISTRAZIONE*****************//
                            
    $hash_generato md5(session_id()."##".mktime()).md5($cPassword);
                            
    $sql1 "SELECT IdUserEsterno FROM TBUTENTI WHERE UserName=\"".$TxtUserName."\"";
                            
    $rsUser2mysql_query($sql1) or die ("Impossibile connettersi!" mysql_error());
                            
    $row mysql_fetch_row($rsUser2);
                            
                            
    $sql2 =    "INSERT INTO TBREGISTRAZIONE ("
                                    
    ."id, hash,id_utente"
                                    
    ."  ) VALUES ("
                                    
    ." \"\""
                                    
    .", \"".$hash_generato."\""
                                    
    .", \"".$row[0]."\""
                                    
    ."  )";
                            
    $rsUser2mysql_query($sql2) or die ("Impossibile eseguire l'insert nella tabella registrazione!" mysql_error());
                            
    $Insert "1";
                        }
                    } 
    In pratica vorrei che, se l'id_utente indicato da $row[0] è uguale a 0(zero) non mi effettui l'insert rimandando un messaggio a video per l'utente.
    Vorrei sapere se è questo il caso dell'utilizzo della Commit trans e/o Rollback.

    Se si potreste farmi un'esempio?
    Grazie mille...

  2. #2
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    dai un occhiata a mysql_insert_id() sul manuale php
    dovrebbe semplificarti un po' il codice.

    Poi prova a verificare se fa o meno il primo inserimento e chiediti perchè.

  3. #3
    grazie per avermi risposto.
    1) Una curiosità mysql_last_id è riferito all'ultimo inserimento?Nel senso che se nello stesso istante si registrano due o più utenti, quella funzione mi resituisce id diversi per utenti diversi?
    Oppure posso incorrere in qualche errore?

    2) "Poi prova a verificare se fa o meno il primo inserimento e chiediti perchè.".
    Quindi secondo te, c'è un'errore e devo capire dove?

    Grazie ancora

  4. #4
    prima erroneamente ho menzionato mysql_last_id, invece è mysql_insert_id().
    ok...per il momento con quella fuinzioncina va bene.
    Però non capisco il problema che mi indichi,in pratica è sbagliata l'insert?
    Codice PHP:
    $sql =    "INSERT INTO TBUTENTI ("
                                    
    ."UserName, Pwd, Cognome, Nome, dRegistrazione, "
                                    
    ."  ) VALUES ("
                                    
    ." \"".$TxtUserName."\""
                                    
    .", \"".$cPassword."\""
                                    
    .", \"".$txtCognome."\""
                                    
    .", \"".$txtNome."\""
                                    
    .", \"".date("Y-m-d G:i:s")."\""
                                    
    ."  )"
    Cmq, non ho problemi con questa insert, era comunque un fatto legato a quell'id_utente, perchè nell'invio della mail, a volte me lo restituiva come 0(zero) e quindi chi doveva confermare la registrazione ovviamente non poteva, perchè si ritrovava la mail con id_utente=0(zero).
    Ho cercato di individuare quello che mi dici "Poi prova a verificare se fa o meno il primo inserimento e chiediti perchè.", ma non ci riesco.
    Se mi puoi indicare cortesemente dove guardare :|

  5. #5
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    dunque...
    prima di tutto non capisco perchè a volte restituisce 0 ed altre un valore.

    Prova a vedere se la riga viene effettivamente aggiunta al db (usa phpmyadmin o come diavolo si chiama).
    Se no, hai ripulito le variabili da tutti i caratteri che possono andare in conflitto con mysql (potresti utilizzare http://php.net/manual/en/function.my...ape-string.php)

    Prova anche ad utilizzare la funzione che ti ho suggerito in abbinamento al tuo metodo e vedi cosa succede nei casi in cui ti da il problema.

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.