Transaction - rollback

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Transaction - rollback

    Hallo zusammen, hab mich aufgrund folgendem Problem hier angemeldet. Bin in PHP noch am Anfang.. also nicht gleich nen anschiss wegen irrelevantem (rechtlinien usw..)

    nun zu meinem Problem, ich will überprüfen ob der name in der DB schon vorhanden ist, wenn dies der Fall ist: rollback.
    Das javascript alert: "Name vergeben" erscheint, doch der Eintrag in der DB findet auch statt trotz rollback..

    PHP-Code:
            MYSQL_QUERY("start transaction");
            
    MYSQL_QUERY("SET AUTOCOMMIT=0");
            
    $result MYSQL_QUERY("insert into zg_users(name, pass) value ('$u_name', '$u_pw')") or die ("Query: <pre>".$sqlstr."</pre>\n"."Antwort0: ".mysql_error());
            
            
    $sqlstr_red "select * FROM zg_users WHERE(name=\"" $u_name "\")";
            
    $result_red MYSQL_QUERY($sqlstr_red) or die("Query: <pre>".$sqlstr_red."</pre>\n"."Antwort1: ".mysql_error());
            if(
    MYSQL_NUM_ROWS($result_red) > 1)
            {
                
    MYSQL_QUERY("rollback");
                echo
    '<script language="javascript">alert("Name vergeben")</script>;';
            } 
    mach ich grundlegend hier was falsch oder was könnte hier das Problem sein? (bei Bedarf geb ich natürlich noch den restlichen code)
    schon mal Danke im Vorraus!
    lg
    Zuletzt geändert von psysmo; 11.02.2008, 03:17.
    ~

  • #2
    Erst "SET AUTOMMIT=0", dann "START TRANSACTION".

    Kommentar


    • #3
      vielen dank für die schnelle Antwort..
      lg
      ~

      Kommentar


      • #4
        Wieso brauchst du hier ne Transaktion? Ein UNIQUE auf den Username würde doch das gleiche bewirken, oder?
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          hi, danke für die antwort.. rollback funzd i.wie immernoch nicht,
          aber ich modle das jetzt um zu UNIQUE.. ich meld mich wieder sobald ein neues problem entsteht welches ich nicht lösen kann oder so.

          lg
          ~

          Kommentar


          • #6
            Was für eine Speicher-Engine benutzst du? Meines Wissens unterstützen nur InnoDB- und BDB-Engines Transaktionen. Der Default ist aber normalerweise auf MyISAM.
            Gruss
            H2O

            Kommentar


            • #7
              Original geschrieben von H2O
              Was für eine Speicher-Engine benutzst du? Meines Wissens unterstützen nur InnoDB- und BDB-Engines Transaktionen. Der Default ist aber normalerweise auf MyISAM.
              vielen dank für diese information!
              mit
              Code:
              ALTER TABLE zg_users ENGINE = InnoDB
              ist die engine jetzt auf InnoDB oder? (der befehl wurde erfolgreich ausgeführt)
              ~

              Kommentar


              • #8
                Original geschrieben von onemorenerd
                Erst "SET AUTOMMIT=0", dann "START TRANSACTION".
                Das macht doch wenig Sinn, entweder man will das eine, oder das andere.

                With START TRANSACTION, autocommit remains disabled until you end the transaction with COMMIT or ROLLBACK. The autocommit mode then reverts to its previous state.
                With START TRANSACTION, autocommit remains disabled until you end the transaction with COMMIT or ROLLBACK. The autocommit mode then reverts to its previous state.
                Meines Wissens unterstützen nur InnoDB- und BDB-Engines Transaktionen.
                NDB nicht zu vergessen, nur der Vollständigkeit halber

                Kommentar


                • #9
                  Original geschrieben von jahlives
                  Wieso brauchst du hier ne Transaktion? Ein UNIQUE auf den Username würde doch das gleiche bewirken, oder?
                  Da postet der Junge einmal in seinem Leben etwas brauchbares und dann wird es ignoriert!


                  InnoDB ist hier ja mal echt Perlen vor die Säue.

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar

                  Lädt...
                  X