Hallo,

Ik heb het volgende script:

<?php
/***********************
****ACTIE BEWOPSLAAN****
***********************/
if($actie == "bewopslaan")
{
if($_REQUEST['lang'] && $_REQUEST['titel'] && $_REQUEST['inhoud'] && $_REQUEST['pid'])
{
$lang = $_REQUEST['lang'];
$titel = $_REQUEST['titel'];
$inhoud = $_REQUEST['inhoud'];
$pid = $_REQUEST['pid'];
$contentid = "content_".$lang;

$query = mysql_query("UPDATE paginas SET title=".$titel.", ".$contentid."=".$inhoud." WHERE id=".$pid."")
or die(mysql_error());
Echo "<B>Pagina is aangepast!</b><br> Over enkele ogenblikken zal de vernieuwde pagina op de website te vinden zijn!";
}
else
{
Echo "<b>Er is een fout opgetreden, mogelijk zijn niet alle velden ingevuld. <br> Probeer het nogmaals...";
}
}
?>

Maar als ik de query uitvoer krijg ik de volgende error:
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 'lang, content_1=

test language 2
WHERE id=2' at line 1

Waar zit de fout want ik kan hem niet vinden, als ik $contentid vervang door content_1 wat mijn veldnaam is werkt het gewoon.

Groetjes,

Kilian
Als ik hem print geeft hij content_1 dus dat is goed.
Probeer het zo eens:
<?php
$query = mysql_query("UPDATE paginas SET title='".$titel."', ".$contentid."='".$inhoud."' WHERE id=".$pid."") or die(mysql_error());
?>
1) HOOO! Ik zie geen preventie tegen SQL-Injection!
2) Wat zijn de types van je variabelen? Zijn het strings? (aan de error te zien wel), oftewel: je mist de quotes om je variabelen.

Maar zorg eerst eens even dat je mysql_real_escape_string() over je vars heengooit voor je ze in de query dumpt, als je tenminste wil dat je applicatie langer leeft als een week.

oh; en waarom REQUEST? en niet POST en/of GET ?
@Yearupie: het werkt nu bedankt :)

@niek: Het is voor een admin panel wat alleen ik zelf gebruik het leek me dus niet echt nodig iets tegen mysql injection te doen en REQUEST heeft eigenlijk geen reden.

Reageren