MySQL - DELETE Syntax fehler

DarkRaver

Erfahrenes Mitglied
Hallo!
Ich habe einen Warenkorb, und den möchte ich gerne leeren. Wieso um gottes Willen geht dann dieser Code nicht:
PHP:
		$sql_wkdeletequery = "DELETE FROM hq_warenkorb,hq_warenkorb_preis WHERE kundennummer = '{$kundennummer}'";
		$sql_wkdeletedatenquery = mysql_query($sql_wkdeletequery);
		
		if($sql_wkdeletedatenquery)
		{
			echo "Der Warenkorb wurde erfolgreich geleert.";
		}
		else
		{
			echo "Es gab ein Problem beim löschen des Warenkorbes. Der Fehler ist:<br />";
			echo mysql_error();
		}
Er zeigt immer an:
Code:
Es gab ein Problem beim löschen des Warenkorbes. Der Fehler ist:
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 'WHERE kundennummer = '15'' at line 1
Sehr merkwürdig, ich weiß einfach nicht mehr weiter. Würde mich über Hilfe freuen.

Mfg

//Edit:
Die Spalten in den beiden Tabellen sind folgende:
hq_warenkorb:
id artnummer kundennummer

hq_warenkorb_preis:
id kundennummer gesamtpreis

Ich möchte lediglich alle Einträge löschen, die der Kunde im Warenkorb hat, also überall wo "kundennummer" = $kundennummer ist.
 
Zuletzt bearbeitet:
Nimm doch einfach mal die geschweiften Klammern um $kundennummer weg.
SQL:
$sql_wkdeletequery = "DELETE FROM hq_warenkorb,hq_warenkorb_preis WHERE kundennummer = '$kundennummer'";
 
Zuletzt bearbeitet:
gesagt, getan.
hier das Ergebnis:
Code:
UPDATE hq_warenkorb,hq_warenkorb_preis SET * = '' WHERE kundennummer = '{$kundennummer}'
Code:
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 '* = '' WHERE kundennummer = '15'' at line 1
 
Zuletzt bearbeitet:
Das mit dem Update war Quatsch, hatte ich falsch verstanden. Du wilsst ja wirklich die gesamten Zeilen der betreffenden ID aus beiden Tabellen löschen. Ich habs oben noch mal berichtigt.
 
Hab mich nochmal belesen das Problem ist offensichtlich das dies ein Mehrfach Delete ist und da sieht die Syntax anders aus etwa so:

Syntax für mehrere Tabellen:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*]] ...
FROM table_references
[WHERE where_condition]

Oder:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*]] ...
USING table_references
[WHERE where_condition]

Frag mich aber bitte nicht wie das nun bei dir aussehen müsste :rolleyes:
Da bin ich leider auch überfragt.
Du könntest allerdings auch schlicht 2 Deletes hintereinander machen also so:
PHP:
        $sql_wkdeletequery = "DELETE FROM hq_warenkorb WHERE kundennummer = '$kundennummer'";
        $sql_wkdeletedatenquery1 = mysql_query($sql_wkdeletequery); 
$sql_wkdeletequery = "DELETE FROM hq_warenkorb_preis WHERE kundennummer = '$kundennummer'";
        $sql_wkdeletedatenquery2 = mysql_query($sql_wkdeletequery);
Und dann halt die If Abfrage abändern.
 
Wenn ich das richtig verstanden habe, müsste das Statement dann so lauten:

PHP:
$sql_wkdeletequery = "DELETE hq_warenkorb, hq_warenkorb_preis FROM hq_warenkorb, hq_warenkorb_preis WHERE kundennummer = '{$kundennummer}'";
 
item: Die geschweifte Klammer ist sowas von richtig! In dem Fall grad nicht nötig, aber immer sicherer als ohne.
item: SQL hat keine Ahnung zu welcher deiner beiden Tabellen das Feld Kundennummer gehört.


Etwa so ist das Kundennummer-Problem gelöst
SQL:
DELETE 
	hq_warenkorb, 
	hq_warenkorb_preis 
FROM 
	hq_warenkorb, 
	hq_warenkorb_preis 
WHERE 
	hq_warenkorb_preis.kundennummer = '{$kundennummer}'
	AND hq_warenkorb.kundennummer = '{$kundennummer}';

Alternatives WHERE
SQL:
	hq_warenkorb_preis.kundennummer = '{$kundennummer}'
	AND hq_warenkorb.kundennummer = hq_warenkorb_preis.kundennummer
 
Zuletzt bearbeitet von einem Moderator:
hmm naja nur wegen Highlighting kanns ja nit sein :D
Er spricht was von wegen sicherer, weil wenn dem so ist werd ich mir das nämlich auch mal angewöhnen.
 
Zurück