PHP-mySQL Scriptproblem

Dieses Thema im Forum "Programmiersprachen" wurde erstellt von ham*, 10. Juli 2006.

  1. ham*

    ham* Homepage-Board - Kritiker

    Registriert seit:
    28. Juli 2004
    Beiträge:
    29
    Zustimmungen:
    0
    hallo liebe php'ler!

    Hab da mal ein simples aber doch komisches Problem:

    Ich hab keine Ahnung was ich da falsch mach
    Code:
    $freischalten="UPDATE user SET active='1' WHERE userid='$userid'" or die(mysql_error());
    	if(mysql_query($freischalten)){
    		echo "Gratulation, $username! Du bist erfolgreich registriert. Klicke <a href=\"login.php\">hier</a> um dich einzuloggen.";
    	}
    	else{
    		echo "Es gab ein Problem bei der Freischaltung in der Datenbank! Bitte melde dies dem Administrator(Email-Adresse findest du in der Registrierungsmail!).";
    	}
    so schaut ein teil eines Scriptes von mir aus. Ich versuche ein Feld in der DB mit dem namen "active" von irgendeinem User "userid" von 0 auf 1 zu schalten. Das 0 ist automatisch erstellt von mySQL. Das Feld ist eines des Typen "BOOL" also eine boolsche variable oder wie das zeug nochmals heißt.

    Wenn ich nun Das ganze ausfüre inkl. Datenbank-Connection usw. kommt auch der Hauptteil der if-Abfrage also dieses:
    Code:
    echo "Gratulation, $username! Du bist erfolgreich registriert. Klicke <a href=\"login.php\">hier</a> um dich einzuloggen.";
    folglich muss ja das query ausgeführt worden sein. Wenn ich aber phpmyadmin öffne steht da noch immer 0 im Feld.

    Meine Frage nun: Was hab ich da Falsch gemacht?

    btw. bin kein Profi, wie man erkennen kann, hab ca. vor 3 Monaten angefangen PHP zu lernen....
     
  2. Killy

    Killy Geheimbote

    Registriert seit:
    16. November 2001
    Beiträge:
    278
    Zustimmungen:
    0
    So stimmt es eher.

    Code:
    $request = mysql_query('UPDATE user SET active="1" WHERE userid="'. $userid .'"');
    
    if($request == 1){
    	echo 'Gratulation, '. $username .'! Du bist erfolgreich registriert. Klicke <a href=\"login.php\">hier</a> um dich einzuloggen.';
    }
    else{
    	echo 'Es gab ein Problem bei der Freischaltung in der Datenbank! Bitte melde dies dem Administrator(Email-Adresse findest du in der Registrierungsmail!).';
    }
    
    Ansonsten stimme ich meinem Vorredner bei du solltest dich dringend in php einlesen.

    Da waren ca. 8 Fehler drin. Und das in nur 7 Zeilen Code.
    Vorsichtshalber noch eine Sicherheitsfrage an dich: wird $userid auf SQL-Injection geprüft?
     
  3. LegendZorro

    LegendZorro ~*+Sklave der Kapatten+*~

    Registriert seit:
    8. Mai 2007
    Beiträge:
    80
    Zustimmungen:
    0
    Naja wenn er sich einlesen soll dann ist die Seite wohl besser.
    PhP.net (Seite ist sehr gut ;) )