My SQL Update - Ich raffs nicht

UnoDosTres

Erfahrenes Mitglied
Hi,

ich bekomme immer eine Fehlermeldung. Aber ich raffe nicht wieso!!

PHP:
if ($action=="updatedata") // Änderungen Speichern
	{
	$details = $HTTP_POST_VARS["details"];
	$status = $HTTP_POST_VARS["status"];
	$datum = $HTTP_POST_VARS["datum"];
	$headline = $HTTP_POST_VARS["headline"];
	$textB = str_replace("\r\n","<br>",$details); // Für den Zeilenumbruch
	
	$aendern = "UPDATE termine SET datum = '$datum', headline = '$headline', status = '$status', text = '$textB' WHERE id = '$id'";
	
	$update = mysql_query($aendern) or die(mysql_error());
	if (mysql_query ($update)) {
	  		echo "<font color=\"#000000\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"> \n";
	  		echo "Die Änderungen wurden erfolgreich gespeichert.</font><br> \n";
			}
			else {
			print ("Es traten Probleme auf. Beitrag konnte nicht gespeichert werden "  );
            echo mysql_errno() . ": " . mysql_error(). "\n";
			}
	
	}

Fehlermeldung:
Es traten Probleme auf. Beitrag konnte nicht gespeichert werden 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

Ich fende den Fehler nicht. Hilfe bitte!
 
Hi.
UnoDosTres hat gesagt.:
PHP:
	$update = mysql_query($aendern) or die(mysql_error());
	if (mysql_query ($update)) {
Du führst hier 2 mal mysql_query aus. Zuerst mit der Update Anweisung. mysql_query gibt daraufhin entweder TRUE oder FALSE zurück was dann als Ergebnis an die $update Variable zugewiesen wird.

Dann führst du nochmal mysql_query aus mit $update als Parameter. Hälst du das für klug? Was erwartest du denn als Resultat von mysql_query(TRUE)?

Gruß
 
Das Update fuehrst Du hier schon aus:
PHP:
$update = mysql_query($aendern) or die(mysql_error());
Und wenn Du mal in die Doku unter mysql_query() guckst wirst Du feststellen, dass Du bei Deiner Query nur TRUE oder FALSE zurueckbekommen wirst.

Dementsprechend wirst Du hier
PHP:
if (mysql_query ($update))
immer folgendes ausfuehren
PHP:
if (mysql_query (TRUE))
denn wenn oben FALSE rauskommt tritt die() in Kraft.
Und eben das bringt Deinen Fehler.

Nachtrag: Da hab ich wohl was zu langsam getippt. ;)
 
Wenn ich e so mache:
PHP:
if ($action=="updatedata") // Änderungen Speichern
	{
	$details = $HTTP_POST_VARS["details"];
	$status = $HTTP_POST_VARS["status"];
	$datum = $HTTP_POST_VARS["datum"];
	$headline = $HTTP_POST_VARS["headline"];
	$textB = str_replace("\r\n","<br>",$details); // Für den Zeilenumbruch
	
	$aendern = "UPDATE termine SET datum = '$datum', headline = '$headline', status = '$status', text = '$textB' WHERE id = '$id'";
	
	$update = mysql_query($aendern) or die(mysql_error());
	 echo mysql_errno() . ": " . mysql_error(). "\n";

Passiert nichts. Sprich das Update wird NICHT durchgeführt.

Echo mysql_errno sagt er mit 0

?
 
Die Syntax ist richtig.

Du solltest einfach nur die "update .." Anfrage schicken und sonst nichts.

Entweder du machst
PHP:
mysql_query($aendern) or die(mysql_error());
(dann wird einfach mit einer Fehlermeldung abgebrochen wenn das Update nicht geklappt hat) ODER
PHP:
if (mysql_query ($aendern)) { ...
Gruß
 
UnoDosTres hat gesagt.:
Wenn ich e so mache:
PHP:
	$update = mysql_query($aendern) or die(mysql_error());
	 echo mysql_errno() . ": " . mysql_error(). "\n";

Passiert nichts. Sprich das Update wird NICHT durchgeführt.

Echo mysql_errno sagt er mit 0
Die 0 heißt, das kein Fehler aufgetreten ist. Wenn die Zeile mit dem Doppelpunkt noch ausgegeben wurde, dann wurde die UPDATE Anfrage erfolgreich abgearbeitet, denn sonst wäre ja schon bei der Zeile drüber der Interpreter "gestorben". Evtl. gab's bloß keine Zeile in der Tabelle mit der id = $id?

Gruß

PS: Du kannst mit der Funktion mysql_affected_rows() bestimmen wieviel Zeilen von dem Update betroffen waren.
 
Zuletzt bearbeitet:
Zurück