Seite 1 von 1

[PHP + MySQL] mysql error #1064

Verfasst: 29.10.2006 16:54
von Spezial
das ganze dreht sich um folgenden codeabschnitt (gleicher fehler tritt bei späteren codeabschnitten auf die einen sql-befehl enthalten der INSERT, DELETE oder UPDATE macht...select geht):

Code: Alles auswählen

	if ($_GET['do'] == 'add') {
	
		$part_hersteller = $_POST['part_hersteller'];
		$part_produkt = $_POST['part_produkt'];
		$part_info = $_POST['part_info'];
		$part_gewicht = $_POST['part_gewicht'];
		$part_preis = $_POST['part_preis'];
		
		$sql = 'INSERT INTO `partz_list`
				( `id` , `part_hersteller` , `part_produkt` , `part_info` , `part_gewicht` , `part_preis` , `part_order` )
				VALUES (
				NULL , \'' . $part_hersteller . '\', \'' . $part_produkt . '\', \'' . $part_info . '\', \'' . $part_gewicht . '\', \'' . $part_preis . '\', \'500000\'
				);';
		
		if (mysql_query('$sql')) {
			$output_title = '<font color="#00CC00">Erfolg!</font>';
			$output_message = 'Part wurde erfolgreich hinzugefügt.';
		}
		else {
			$output_title = '<font color="#CC0000">Error!</font>';
			$output_message = 'Part konnte nicht hinzugefügt werden.';
		}
		die(mysql_errno() . ': ' . mysql_error());
		
		renumber_order();
	}
Jetzt macht er aber nich das was er soll, sondern dort wo ich die die() Zeile eingefügt habe steht dann:
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 '$sql' at line 1
Die MySQL Datenbank ist Version 5.0.24a glaub ich. Wenn ich den Befehl ausgefüllt im phpmyadmin eingebe funktioniert es aber...
Was zur Hölle ist da falsch? :-?

hoffe auf schnelle antwort ^^

greetz

Verfasst: 29.10.2006 17:33
von Miriam
finden:

Code: Alles auswählen

if (mysql_query('$sql'))
tauschen gegen:

Code: Alles auswählen

if (mysql_query($sql))

Verfasst: 29.10.2006 17:51
von Spezial
shit ^^
danke, manchmal sieht man echt den wald vor lauter bäumen nicht mehr ^^

Verfasst: 29.10.2006 18:19
von larsneo
du weisst aber schon, dass der code ohne validierung der $_POST werte eine einladung für sql-injection ist, oder?

Verfasst: 29.10.2006 22:10
von Spezial
larsneo hat geschrieben:du weisst aber schon, dass der code ohne validierung der $_POST werte eine einladung für sql-injection ist, oder?
ich weiß nichtmal was du mit validierung meinst, geschweige denn sql-injection :oops:

Verfasst: 29.10.2006 22:29
von fanrpg
schau dir mal auf php.net, mysql_real_escape_string - mysql_escape_string an, das dürfte helfen.
Mit einer SQL Injection ist folgendes gemeint, man kann damit böshaftigen SQL Code in die eigentliche Abfrage einschleusen und somit Kontrolle über die Datenbank erhalten, im Falle phpBB auch Adminrechte und Co. mysql_escape_string() und Co. auch addslashes() schützen davor.
s.a: http://www.phpbb.de/viewtopic.php?t=117446