kostenloser Webspace werbefrei: lima-city


SQL: UPDATE - Nichts passiert

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Ich versuche mit folgendem Code eine bestimmte Zeile, die mit dem Schlüssel $zeile[0] und dem Namen 'registriert', zu überschreiben. Der Code läuft durch eine andere sql- Anfrage, die If- Abfrage, überspringt else und beendet sich dann.
    So weit, so gut. Doch wenn ich in der Datenbank nachsehe, ist alles, wie zuvor.

    Woran kann das liegen?

    if ($zeile[1] == $_GET['regkey']) {
    	$ssql = "
    		UPDATE `" . MYSQL_DATENBANK . "`.`anmeldedaten`
    		SET `registriert` = \'JA\'
    		WHERE `anmeldedaten`.`id` = '" . $zeile[0] . "';
    	";
    	$sch_erg = mysql_query($ssql) or die ($fehler = 1);
    } else {
    	echo "Registration fehlgeschlagen - Schon registriert? Falscher Link?";
    }


    Beitrag zuletzt geändert: 25.8.2009 15:46:53 von toolz
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo toolz,

    lass dir einfach mal mit mysql_error die letze Fehlermeldung ausgeben (und poste diese dann hier)
    Mir hilft auch öfters das ausgeben vom aktuellen querry, also dann sobald er zusammengesetzt (die Variabeln durch die Werte ersetzt, usw). Dort erkennt man dann den Fehler schneller.

    if ($zeile[1] == $_GET['regkey']) {
    	$ssql = "
    		UPDATE `" . MYSQL_DATENBANK . "`.`anmeldedaten`
    		SET `registriert` = \'JA\'
    		WHERE `anmeldedaten`.`id` = '" . $zeile[0] . "';
    	";
    	$sch_erg = mysql_query($ssql) or die ($fehler = 1);
           print mysql_error();
           print $ssql;
    } else {
    	echo "Registration fehlgeschlagen - Schon registriert? Falscher Link?";
    }
  4. Ist "anmeldedaten" der name der Tabelle? Ich benutze für meine SQL-Abfragen nicht den Datenbankname, das ist mir zumindest unbekannt. Baust du vorher denn eine Verbindung zur Datenbank auf?

    $ssql="UPDATE anmeldedaten
     SET registriert = 'JA' WHERE id ='" . $zeile[0] . "'";


    Beitrag zuletzt geändert: 25.8.2009 15:50:15 von karpfen
  5. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    Fehler: [Soll heißen keiner =)]
    SQL: UPDATE `anmeldedaten` SET `registriert` = \'JA\' WHERE `anmeldedaten`.`id` = '1';


    Ich musste die Ausgabe vor die SQL- Anfrage setzen, weil es mir aus irgendeinem Grund sonst nicht angezeigt wird... Er hängt sich womöglich auf oder bricht ohne Grund ab... ?

    karpfen schrieb: Ist "anmeldedaten" der name der Tabelle?

    Ja.

    Der Code sieht übrigens so ungewöhnlich aus, weil ich nach mehrmaligem Hin- und Herschreiben den automatisch erzeugten Code vom PHP- Admin genommen habe, aber der funktioniert auch nicht.

    karpfen schrieb: Baust du vorher denn eine Verbindung zur Datenbank auf?

    Ja.

    Beitrag zuletzt geändert: 25.8.2009 16:07:05 von toolz
  6. t*****b

    Wieso escapesed du

    " [...] SET `registriert` = \'JA\' [...] "


    das JA...

    Beitrag zuletzt geändert: 25.8.2009 16:11:11 von trueweb
  7. Autor dieses Themas

    toolz

    Kostenloser Webspace von toolz

    toolz hat kostenlosen Webspace.

    toolz schrieb: Der Code sieht übrigens so ungewöhnlich aus, weil ich nach mehrmaligem Hin- und Herschreiben den automatisch erzeugten Code vom PHP- Admin genommen habe, aber der funktioniert auch nicht.


    Mh...
    Nach Entfernen funktioniert es... Aber was habe ich verändert? Der Code sah doch vorher genauso aus.

    Trozdem danke, dass es jetzt klappt.
  8. m. E. liegt derFehler darin dass Du eine doppelte Fehlermeldungsausgabe eingebaut hast.

    versuchs doch mal so:

    if ( $_GET['regkey'] == "") { echo "Registration fehlgeschlagen - Schon registriert? Falscher Link?";
    } else {
    $ssql = "
    UPDATE `" . MYSQL_DATENBANK . "`.`anmeldedaten`
    SET `registriert` = \'JA\'
    WHERE `anmeldedaten`.`id` = '" . $zeile[0] . "';
    $sch_erg = mysql_query($ssql) or die ($fehler = 1);
    print mysql_error();
    print $ssql;

    }

    Beitrag zuletzt geändert: 26.8.2009 0:18:22 von arkmeister
  9. toolz schrieb:
    Trozdem danke, dass es jetzt klappt.


    Naja jetzt funktionierts zwar aber:

    toolz schrieb:
    Fehler: [Soll heißen keiner =)]
    SQL: UPDATE `anmeldedaten` SET `registriert` = \'JA\' WHERE `anmeldedaten`.`id` = '1';


    Ich musste die Ausgabe vor die SQL- Anfrage setzen, weil es mir aus irgendeinem Grund sonst nicht angezeigt wird... Er hängt sich womöglich auf oder bricht ohne Grund ab... ?


    Bricht warscheinlich nicht ohne Grund ab sonderen liegt am:
    die($fehler = 1);

    (-> die() bricht die Ausführung ab und gibt das was zwischen den Klammern steht aus, jedoch bei dieser Vriablen zuweisung wird nichts ausgegeben)

    und das mysql_error sollte schon nach dem mysql_querry aufgerufen werden, ansonsten müsste die Funktion ja den Fehler vorhersehen.

    eine Möglichkeit anstatt deinem die(): dort die mysql_error aufrufen:

    if ($zeile[1] == $_GET['regkey']) {
    	$ssql = "
    		UPDATE `" . MYSQL_DATENBANK . "`.`anmeldedaten`
    		SET `registriert` = 'JA'
    		WHERE `anmeldedaten`.`id` = '" . $zeile[0] . "';
    	";
    	$sch_erg = mysql_query($ssql) or die ("Fehler: ".mysql_error()."<br />SQL Querry: ".$ssql);
    } else {
    	echo "Registration fehlgeschlagen - Schon registriert? Falscher Link?";
    }


    Die \ waren natürlich zu viel. denn innerhalb von Doppelten anführungszeichen müssen die einfachen nicht escaped werden. bzw PHP entfernt dort die \ auch nicht.

    Beitrag zuletzt geändert: 26.8.2009 0:28:36 von dussel
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!