Problem mit UPDATE Anweisung

godfather_al

Mitglied
Guten Morgen,

arbeite noch nicht lange mit SQL und PHP und versuche derzeit eine ganz einfache Referenzdatenbank hinzubekommen, dabei geht folgendes leider nicht:

PHP:
$sql = 'UPDATE portal_items SET referencesortnumber = "'.$_POST['Sortiernummer'].'" AND referenceheadline = "'.$_POST['Headline'].'" AND referencecontent = "'.$_POST['Content'].'" AND referencelink = "'.$_POST['Link'].'" AND referencepicture = "'.$_POST['Bild'].'" WHERE referenceid = "'.$_POST['Id'].'" ';

Statt den jeweiligen Datensatz zu ändern wird gleich zwei mal ein neuer Datensatz hinzugefügt, kann mir hier jemand weiter helfen?

Wenn ich das gleiche mit Insert versuche (natürlich ohne die WHERE-Klausel) gehts ohne Probleme.

Viele Grüße und schonmal danke für Euere Tips
Alex
 
Ich gehe einfach mal davon aus, dass du MySQL verwendest.

Dein Query kann niemals zwei neue Datensätze erzeugen, oder hab ich deine Aussage falsch verstanden?

Die "ANDs" haben in diesem Query dort nichts verloren, das müssen Kommas sein:
PHP:
$sql = 'UPDATE portal_items SET referencesortnumber = "'.$_POST['Sortiernummer'].'" , referenceheadline = "'.$_POST['Headline'].'" , referencecontent = "'.$_POST['Content'].'" , referencelink = "'.$_POST['Link'].'" , referencepicture = "'.$_POST['Bild'].'" WHERE referenceid = "'.$_POST['Id'].'" ';
 
Die diese Art von Fragen sehr oft kommt, habe ich mal ein Tutorial geschrieben wie man am besten auf Fehlersuche geht.

PHP MySQL Debug Queries

Geh es doch mal durch und falls du die Lösung nicht findest, poste mal das Ausgegebe SQL-Statement ins Forum.
 
Hi,

vielen Dank für die Antwort, werde die AND entsprechend austauschen und ja ich verwende MYSQL. Das die Einträge gedoppelt werden ist wirklich so, evtl. habe ich mich drum herum noch vertan.... aber wenn das update generell funktioniert wäre mir schon sehr geholfen....

Viele Grüße
Alex
 
Dann geh doch mal nach meine Tutrial vor...

Zudem solltest du deine Eingaben mit mysql_real_escape_string escapen....
PHP:
$post = $_POST;
array_walk_recursive($post, 'escapeString');

$sql = "
	UPDATE 
		portal_items 
	SET 
		referencesortnumber = '{$post['Sortiernummer']}' ,
		referenceheadline = '{$post['Headline']}',
		referencecontent = '{$post['Content']}',
		referencelink = '{$post['Link']}',
		referencepicture = '{$post['Bild']}'
	WHERE 
		referenceid = '{$post['Id']}' 
";

function escapeString(&$value){
    $value = mysql_real_escape_string($value);
}
 
Hi,

ok werde das mal so testen, melde mich mit den Ergebnissen, wird aber sicher erst heute abend oder morgen früh, denke mal es wird dann sicher gehen, schonmal ganz herzlichen Dank an alle und werde mir auch mal die Tutorials vornehmen.

Viele Grüße
Alex
 
Hallo zusammen,

sorry dass es so lange gedauert hat, hatte beruflich viel Stress und das Programmieren ist für mich derzeit "nur" ein Hobby, wenn auch ein sehr interessantes.

Auf jeden Fall habe ich es jetzt ans Laufen bekommen, die Einträge werden entsprechend upgedated wie gewünscht, vor allem die Fehlersuchtipps von yaslaw haben sehr geholfen, dankee.

Viele Grüße
 
Zurück