kostenloser Webspace werbefrei: lima-city


Problem mit mysql UPDATE

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    Hallo.

    Ich hab schon wieder ein neues tag/problem">Problem... :nosmile:
    Und zwar funktioniert UPDATE in einer Datei nicht, was ich mir aber wirklich nicht erklären kann, da ich den gesamten Codeteil aus einer anderen kopiert habe, die ich schon vorher geschrieben habe und in der es einwandfrei funktioniert....

    $code = $_SESSION['DC'];
    		$findlink = "SELECT * FROM $dbtable WHERE code = '$code'";
    		$getlink = mysql_query($findlink);
    		if ($getlink == false)
    			{
    			$errmsg = mysql_error();
    			$subject = "MySQL-ERROR";
    			$message = $errmsg;
    			mail($to, $subject, $message);
    			mysql_close();
    			echo $error;
    			}
    		else
    			{
    			$link = mysql_fetch_array($getlink);
    			$url = $link['link1'];
    			$change = "UPDATE dcodes_LOG SET DOWNLOAD1 = '$url' WHERE CODE = '$code'";
    			$update = mysql_query($change);
    			if ($update == false)
    				{
    				$errmsg = mysql_error();
    				$subject = "MySQL-ERROR";
    				$message = $errmsg;
    				mail($to, $subject, $message);
    				}
    			header('Location: '.$url);
    			mysql_close();


    Nämlich funktioniert von $change bis zu header anscheinend nichts (header funktioniert). Ich bekomme keine Mail ($to ist schon vorher definiert), es wird kein Fehler ausgegeben (sogar wenn ich error_reporting(E_ALL) aktiviere) und der Link wird nicht in die Datenbank geschrieben.
    Hat jemand eine Erklärung? Danke im Voraus!

    Beitrag zuletzt geändert: 8.6.2012 4:04:36 von yorecords
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Hast du schonmal versucht dir die einzelnen Teile ausgeben zu lassen?
    Ein altbekanntes Problem, was mir als erstes eingefallen ist, ist das "Headers already sent"-Problem.
    Die Funktion header() kann nicht verwendet werden, wenn du davor bereits Ausgaben erzeugt hast (echo, Leerzeichen vor dem <?php-Tag oder wenn mehrere Files verwendet werden auch nach einem ?>-Tag etc.).
    Der zweite Ansatz (erscheint mir wahrscheinlicher) wäre: Ist $code vielleicht leer oder enthält einen Wert, der nicht in der Datenbank steht? UPDATE modifiziert ja nur etwas, wenn es einen oder mehrere Einträge in der Tabelle findet, auf die die WHERE-Condition zutrifft.
    Es wäre also denkbar, dass der UPDATE ausgeführt wird, ohne einen Fehler zu liefern und daher natürlich auch keine Mail verschickt wird.
    lg Vex

    Beitrag zuletzt geändert: 8.6.2012 7:19:06 von vexi
  4. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Hast du schon in der Datenbank nachgeschaut ob UPDATE wirklich nichts macht?

    Ansonsten:
    $findlink = "SELECT * FROM $dbtable WHERE code = '$code'";
    Wurde davor
    $dbtable
    auch definiert?

    In deinem Code fehlt ein
    }
    am Ende...

    Und wenn
    header()
    funktioniert müsste dein Update auch ausgeführt worden sein; dein Mail würdest du bekommen, wenn UPDATE oder SELECT fehlschlägt.

    Schau also nochmal in der Datenbank ob sich da was ändert (phpMyAdmin).

  5. Du hast einmal
    SELECT ... WHERE code = '$code'

    und dann wieder
    UPDATE ... WHERE CODE = '$code'

    könnte es sein,
    dass auch die Groß-/Klein-Schreibung bei Spalten-Namen entscheidend ist ?!
    also entweder CODE oder code nehmen, je nachdem wie in Tabelle definiert.

  6. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    hackyourlife schrieb:
    Hast du schon in der Datenbank nachgeschaut ob UPDATE wirklich nichts macht?

    Ansonsten:
    $findlink = "SELECT * FROM $dbtable WHERE code = '$code'";
    Wurde davor
    $dbtable
    auch definiert?

    In deinem Code fehlt ein
    }
    am Ende...

    Und wenn
    header()
    funktioniert müsste dein Update auch ausgeführt worden sein; dein Mail würdest du bekommen, wenn UPDATE oder SELECT fehlschlägt.

    Schau also nochmal in der Datenbank ob sich da was ändert (phpMyAdmin).


    Klar hab ich nachgeschaut ob es wirklich nichts macht.. Ja $dbtable wurde definiert. Und am ende des Codes fehlt da einiges, ist aber nicht relevant.Header funktioniert, UPDATE aber nicht. Wie gesagt: Sonst funktioniert alles. Und ich hab gestern 1000 Mal in die Datenbank geschaut. Da tut sich nichts.

    guteseiten schrieb:

    Du hast einmal
    SELECT ... WHERE code = '$code'

    und dann wieder
    UPDATE ... WHERE CODE = '$code'

    könnte es sein,
    dass auch die Groß-/Klein-Schreibung bei Spalten-Namen entscheidend ist ?!
    also entweder CODE oder code nehmen, je nachdem wie in Tabelle definiert.



    Das sind 2 verschiedene Spalten in 2 verschiedenen Tabellen.

    vexi schrieb:
    Hast du schonmal versucht dir die einzelnen Teile ausgeben zu lassen?
    Ein altbekanntes Problem, was mir als erstes eingefallen ist, ist das "Headers already sent"-Problem.
    Die Funktion header() kann nicht verwendet werden, wenn du davor bereits Ausgaben erzeugt hast (echo, Leerzeichen vor dem <?php-Tag oder wenn mehrere Files verwendet werden auch nach einem ?>-Tag etc.).
    Der zweite Ansatz (erscheint mir wahrscheinlicher) wäre: Ist $code vielleicht leer oder enthält einen Wert, der nicht in der Datenbank steht? UPDATE modifiziert ja nur etwas, wenn es einen oder mehrere Einträge in der Tabelle findet, auf die die WHERE-Condition zutrifft.
    Es wäre also denkbar, dass der UPDATE ausgeführt wird, ohne einen Fehler zu liefern und daher natürlich auch keine Mail verschickt wird.
    lg Vex


    Wie gesagt: header funktioniert. Das mit $code werd ich aber am besten noch einmal überprüfen, vielleicht stimmt ja irgendwas mit der Session nicht... Daran hab ich noch nicht gedacht.
  7. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wenn du sagst dass nichts passiert kannst du ja mal prüfen ob die richtige Zeile upgedated werden würde...
    $change = "SELECT * FROM dcodes_LOG WHERE CODE = '$code'";
    Lass dir mal das Ergebnis davon ausgeben... das zeigt dir an welche Zeilen überhaupt upgedated werden würden.
    Wenn hier etwas zurückkommt müsste auch das Update erfolgreich sein, wenn hier 0 Zeilen zurück kommen hast du den Fehler gefunden (WHERE-Klausel).
  8. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    Ich glaub es einfach nicht.... :eek:
    Gestern bin ich stundenlang dabeigesessen und hab alles versucht, und heute gehts auf einmal.... Ich hab nichts verändert aber es funktioniert jetzt....:confused:

    Jedenfalls vielen Dank für eure Hilfe!


    Edit:
    Und schon wieder funktioniert es nicht mehr.. :wall: Ich versteh das nicht.. Wieso funktioniert es nur wenn es Lust dazu hat?

    Beitrag zuletzt geändert: 9.6.2012 0:04:45 von yorecords
  9. Lass dir mal $change ausgeben und prüfe dann, ob der überhaupt einen zu aktualisierenden Datensatz finden kann.

  10. Autor dieses Themas

    yorecords

    Kostenloser Webspace von yorecords

    yorecords hat kostenlosen Webspace.

    vexi schrieb:
    Lass dir mal $change ausgeben und prüfe dann, ob der überhaupt einen zu aktualisierenden Datensatz finden kann.



    Das Problem ist gelöst.. Der Fehler lag am Tabellentyp...
    Danke für eure Hilfe..
  11. 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!