Finde den PHP-Fehler nicht...

3Dnavigator

Erfahrenes Mitglied
Hallo zusammen!
In folgendem Script hat's einen Fehler. Es aktualisiert meine MySQL-Tabelle nicht. Ansonsten funktioniert alles...

PHP:
if($logout_submit != "" AND $logout_mail != ""){ // PRÜFUNG OB MAILADRESSE IN DER DATENBANK IST
	include("./config/sqlconuse.php");
	$sqllogout = mysql_query("SELECT email,  FROM Newsletter WHERE email = '$logout_mail'");
	$logoutdata = mysql_fetch_array($sqllogout);
	if($logoutdata[] == ""){ // AUSGABE WENN DIE MAILADRESSE NICHT GESPEICHERT IST
		echo("Die von Ihnen eingegebene eMail-Adresse wurde in unserem Newsletter-System nicht gefunden.<p>");
		mysql_close();
	}
	else{ // MAIL SENDEN UND KEY IN DATENBANK SPEICHERN
		$key = time();
		$logoutbetreff = "Bestätigungsanfrage: Newsletter-Logout";
		mysql_query("UPDATE Newsletter SET key = '$key' WHERE email = '$logout_mail'");
		mail($logout_mail, $logoutbetreff, "Klicken Sie auf den folgenden Link...:\nhttp://......?id=".$key, "From: $newsmail\r\n");
		echo("Bitte bestätigen Sie diese Aktion mittels dem Mail, das wir Ihnen gerade geschickt haben.");
		mysql_close();
	}
}

Es geht wirklich alles. Er kann in der Datenbank überprüfen ob die Mailadresse vorhanden ist und alles. Aber einfach die Variable $key speichert es nicht...
Was kann das noch sein?
 
Ein blick und 2 Fehler:


$sqllogout = mysql_query("SELECT email, FROM Newsletter WHERE email = '$logout_mail'")

mit dem ' ein beispiel:

PHP:
$test = "das ist nen test o_O"
echo "Hallo $test";
// ergibt: Hallo das ist ein test o_O
echo 'Hallo $test';
// ergibt Hallo $test
 
Zuletzt bearbeitet:
Ja schon, aber
PHP:
echo "Hallo '$test'";
ergibt Hallo 'das ist nen test o_O' - was foxych ja beabsichtigt. Das Komma hinter email ist in der Tat überflüssig.

In welchem Feldtyp versucht du den $key zu speichern?
 
Bei mir ging noch nicht eine Datenankabfrage wo ich die Werte in ' ' geschrieben habe... das ist alles was ich ihm sagen wollte das es vielleicht daran liegt :)

Noch als zusätzliche Hilfe, ein nützlicher weg um Fehler zu finden ist
echo ("SELECT email, FROM Newsletter WHERE email = '$logout_mail'");
usw, einfach seine Query mit copy & paste mal hinschreiben. Meist sieht man dann schnell woran es liegt...
 
Hm, Engelchen...Ich schreibe alle meine SQL Querys mit ' ', bei mir hats bisher immer funktioniert..
Das mag wohl daran liegen, dass sie in Anführungszeichen stehen.
 
Der Grund, dass mir dieses Forum nach "email" nur ein Komma macht, ist, dass es mir das englische Wort für Geschlecht (-s-e-x-) löscht, da es annimmt, ich benutze es um hässliche Sachen zu schreiben - was ich natürlich nie wagen würde...

Deshalb auch weiter unten die Zeile:
PHP:
if($logoutdata[] == ""){

Habe nun noch ausprobiert, ob es ohne die ' geht. Aber auch ohne diese erziele ich, dass mir die Variable $key in die Datenbank geschrieben wird. An der Variable liegt's nicht, da im Mail der Wert der Variable richtig ausgegeben wird.
 
Zuletzt bearbeitet:
Original geschrieben von foxych
Aber auch ohne diese erziele ich, dass mir die Variable $key in die Datenbank geschrieben wird.

Wie jetzt? Wird sie geschrieben, oder nicht? Ich denke mal nicht, dass war doch das ursprüngliche Problem?

Welchen Typ hat den jetzt das entsprechende Feld in der DB? Wenn das jetzt z.B. smallint (oder gar tinyint) ist, passt der Wert schlicht und ergreifend nicht rein, deshalb frag ich. Der richtige Typ wäre int (unsigned - negative timestamps wirst du wohl nicht haben).
 
Natürlich meinte ich, dass es nicht geht. Sorry, hab' mich vertippt.

Also der Feldtyp ist ein auf 10 Zeichen (das reicht ja) beschränktes "varchar"-Feld. Sollte doch gehen, oder?
 
Zurück