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?
Zie de vele tutorials hierover. UPDATE.
Tim Kampherbeek schreef op 10.06.2009 12:36
Hier vragen stellen kan natuurlijk ook. Maar aangezien je geen flauw idee hebt hoe PHP werkt is het misschien een goeie tip.
Wie zegt dat hij geen idee heeft hoe PHP werkt? Dit is puur SQL en heeft dus niets met PHP te maken...

SQL beginnershandleiding

Zie deze handleiding en kijk dan zoals SanThe al zegt eens naar de UPDATE queries.
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..
Strings zetten we single quotes omheen.
Afra schreef op 10.06.2009 13:26
Strings zetten we single quotes omheen.

En waar is je sql-injection beveiliging?
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.
Je bent geweldig.. Alleen was je " vergeten, met dat erbij aant einde doet hij het perfect. Bedankt voor de hulp, zal me hier eens in gaan verdiepen..

Reageren