In mijn script heb je een bericht voor je www...nl/wijzigserie1.php?id=16 en dan kun je dit in een formulier aanpassen. Daarna druk je op verstuur met deze form action De form action: $_SERVER['PHP_SELF']; en dan geeft hij deze fout:


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 id = ''' at line 7


Voor de volledigheid hieronder het stuk script waar het omgaat.


<?php
elseif (!empty($_POST)) {
    $query = "
    Update serie1
    SET
    titel       = '" . $_POST['titel'] . "',
    poster      = '" . $_POST['poster'] . "',
    email       = '" . $_POST['email'] . "',
    bericht     = '" . $_POST['bericht'] . "',
    WHERE id    = '" . $_GET['id'] . "'
    ";
    $res = mysql_query($query) or die (mysql_error());
    $row = mysql_fetch_assoc ($res);
    header('Location: serie 1 overzicht.php');
exit;
    }
else
    {
?>
<html>
<head>
<title>Verander bericht</title>
</head>
<body>
<?
$sql = "
    SELECT id, titel, poster, email, bericht
    FROM serie1
    WHERE id = '" . $_GET['id'] . "'
    LIMIT 0,1
    ";
        if (!($res = mysql_query ($sql))) {
            trigger_error (mysql_error ());
        }
        else {
            $row = mysql_fetch_assoc ($res);
            $row['bericht'] = nl2br ($row['bericht']);
    
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Titel:<BR />
<TEXTAREA NAME="titel" COLS="60" ROWS="1"><?php echo $row['titel']?></TEXTAREA><BR />
Poster:<BR />
<TEXTAREA NAME="poster" COLS="60" ROWS="1"><?php echo $row['poster']?></TEXTAREA><BR />
Email:<BR />
<TEXTAREA NAME="email" COLS="60" ROWS="1"><?php echo $row['email']?></TEXTAREA><BR />
Bericht: <BR />
<TEXTAREA NAME="bericht" COLS="60" ROWS="10"><?php echo $row['bericht']?></TEXTAREA><BR />
<INPUT TYPE="submit" NAME="submit" VALUE="verstuur"></INPUT>
</body>
</html>


Heeft iemand een idee? Bij voorbaat dank!
Echo je query eens, als je het formulier verstuurd is GET['id'] waarschijnlijk leeg.
<?php echo $_SERVER['PHP_SELF'].$_GET['id']; ?>

Zo iets? Nog wel even even controleren of $_GET['id'] bestaat en aan alle voorwaarden voldoet, bv. nummeriek is.
<?php
echo $_SERVER['REQUEST_URI'];
?>
Jullie hebben beide gelijk. Het is idd zoiets als Frank zegt. Probleem is dat hij op deze manier dit doet: www...nl/wijzigserie1.php16. Dan moet tussen php en 16 nog id=

Als je de id= er dan op zo´n soort manier tussen plakt:

<?php echo $_SERVER['PHP_SELF'].id=$_GET['id'];?>

of

<form action="<?php echo $_SERVER['PHP_SELF'].id='" . $_GET['id'] . "' ;?>

Dan krijg je deze error:

Parse error: parse error, unexpected '=', expecting ',' or ';' in
@Jason:

Dan verschijnt idd de goede url!(y)

Maar dan krijg ik alsnog deze fout:
<?
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 id = '16'' at line 7
?>

In dit geval was de id 16.
De komma achter bericht='blaaah' mag niet

Zo dus:


UPDATE serie1
    SET
    titel       = '" . $_POST['titel'] . "',
    poster      = '" . $_POST['poster'] . "',
    email       = '" . $_POST['email'] . "',
    bericht     = '" . $_POST['bericht'] . "'
    WHERE id    = '" . $_GET['id'] . "'



edit: ik wil iedereen verzoeken voortaan eerst de topicvraag goed door te lezen, ik weet van heel veel programmeurs die hier hebben gereageerd best dat ze weten waardoor een SQL fout optreedt.
Voor een id (numeriek) hoef je er geen quotes omheen te plakken. Alhoewel dat waarschijnlijk niet het probleem oplost.

Verder zou ik mij als ik jou was even verdiepen in de beveiliging van mysql. Het is niet verstandig om rechtstreeks een id in een query te zetten.
...dus bekijk de SQL Injection tutorial eens :-)
Bedankt Erik! Het werkt!

Ik heb de tutorial bekeken en ik zal als ik het gehele script af heb, nog eens wat extra beveiliging erop zetten. Al snap ik niet wie er het in zijn hoofd zou halen mijn site een beetje te gaan verkloten.
Nouja, je moet gewoon voorkomen dat het gebeurd. Als je doorhebt hoe het werkt programmeer je veilige systemen zonder dat je het zelf doorhebt...

Reageren