Ik heb dus een script waarmee ik data uit een database wil aanpassen. Ik heb alleen geen idéé hoe ik het aan moet pakken. Met INSERT INTO gaat het niet lukken heb ik al gemerkt.. Iemand anders ideeën?
Mijn php is niet zoals de meesten hier, maar meestal lukt alles me wel..
Heb nu dit stukje code:
<?php
include('header.php');
$inhoud = $_POST['inhoud'];
$id = $_GET['id'];
$sql = "UPDATE paginas SET inhoud = ".$inhoud.", id = ".$id." WHERE id = ". $_GET['id'];
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'Geen records gewijzigd. <br />Query: '.$sql;
}
else
{
echo 'Update was succesvol! De query:'.$sql;
}
include('footer.php');
?>
In header.php zit het config gedeelte. Krijg alleen deze error:
Notice: 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 '
test
, id = 2 WHERE id = 2' at line 1
In query: UPDATE paginas SET inhoud =
test
, id = 2 WHERE id = 2 in /var/www/html/verwerkscript.php on line 10
Ik zelf kan niet vinden wat nou de fout is..
Goed dat je het zegt SanThe, heb het er even omheen gezet.
Dan zou het dus op ongeveer dit neerkomen:
$sql = 'UPDATE cms SET content = $inhoud WHERE `id` = 1';?
Werkt ook niet, deze error:
Notice: Unknown column '$inhoud' in 'field list'
In query: UPDATE cms SET content = $inhoud WHERE `id` = 1 in /var/www/html/verwerkscript.php on line 9
De querry doet het zo wel:
UPDATE
cms
SET
content = 12
WHERE
id = '1'
Maar zodra ik '.$inhoud.' of iets op de plaats van 12 doe krijg ik een error..
$sql = "UPDATE cms SET content = '" . mysql_real_escape_string($_POST['inhoud']) . "' WHERE `id` = 1;
Je kan in je query gewoon: $_POST gebruiken, in je eerste bericht zeg je:
$inhoud = $_POST['inhoud'];
Dat is een variabele kopieren in een andere en er vervolgens niks mee doen, dan is dat niet nodig.
Strings horen in queries tussen enkele quotes en variabelen haal je altijd buiten quotes:
<?php
$sql = "
UPDATE cms
SET content = '".$inhoud."'
WHERE id = 1
";
?>
Je kan in je query gewoon: $_POST gebruiken
Nee, dat wil je niet! Gebruik POST variabelen nooit direct (zonder beveiliging) in je query. Voor de duidelijkheid van je scripts zou je het volgende kunnen doen:
<?php
$inhoud = mysql_real_escape_string($_POST['inhoud']);
?>
Van $inhoud weet je nu dat het een variabele is die je veilig in je query kunt gebruiken en tevens voorkom je veelvuldig voorkomen van mysql_real_escape_string() in je queries.