Hallo allemaal,

als ik in een php script iets wil wijzigen en op opslaan klik dan krijg ik deze foutmelding:

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 '='Dr.' , Voornaam='Rudolf' , Tussenv='van' , Voorletters='R.', ' at line 3

Wie weet wat dit betekent, ik heb al het een en ander gezocht maar ik kom er niet uit.
Wie kan mij helpen?
Mogelijk een komma in een variabele die je wilt opslaan, of de komma's in je query verkeerd staan?
Laats eens het stukje code zien waar de genoemde query in staat.
Hoe kan ik hier makkelijk een stukje code laten zien?
Gewoon kopiƫren en plakken.
Wel tussen code tags plaatsen <code>hier je code</code> alleen dan met [ en ] op de plaats van de < en >, respectievelijk.

PS. Ik hoop dat de volledige SQL query deel van je code is?
Als ik iets heb gewijzigd en dan op opslaan heb geklikt, kom ik op dit script:



<?php
session_start();
ini_set('display_errors', 1);
//error_reporting(E_ALL | E_STRICT);
include ("Clef.php");
include 'test/passcode.php';

$in = $_SESSION['sleutel'];
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{ //kijken of het formulier gepost is                  

1e open {
    
        $Titel = $_POST['TI'];
	$Voornaam = $_POST['VN'];
	$Tussenv= $_POST['TV'];
        $Voorletters = $_POST['AH'];
	$Achternaam = $_POST['AN'];
	$Geslacht = $_POST['GS'];
	$Gebdatum = $_POST['GD'];
	$Overldatum = $_POST['OD'];
	$Opmerking =$_POST['OPM'];


//-------------------------------------------------------

   mysql_query("UPDATE komponisten
        
		Titel='$Titel' ,
		Voornaam='$Voornaam' ,
                Tussenv='$Tussenv' ,
		Voorletters='$Voorletters',
                Achternaam='$Achternaam' ,
		Geslacht='$Geslacht' ,
                Gebortedatum='$Gebdatum' ,    
                Overlijdingsdatum='$Overldatum',
                Opmerking='$Opmerking'
                WHERE ID='$in'") or die("Oeps " . mysql_error());
//-----------------------------------------------------------
//-------------------------------------------------------
    $Inlognaam = $Logincode;
    $Functie = "DOCENT";

    $New = $_SESSION['NewLog'];
    $New = trim($New);
    if ($New == "New")
    {
        $_SESSION["NewLog"] = "";
        mysql_query("INSERT INTO Gebruikers (Inlognaam,Password,Functie) VALUES ('" . $Inlognaam . "',                        

    AES_ENCRYPT('$Password','$passcode'), '" . $Functie . "')") or die(mysql_error());

    } else
    {
        if(!empty($Password))
        {
        mysql_query("UPDATE Gebruikers SET Inlognaam='$Inlognaam',      
        Password=AES_ENCRYPT('$Password','$passcode') , Functie=' $Functie' WHERE Inlognaam='$Inlognaam'")    
        or  die("Oeps " . mysql_error());
        }
    }
}
?>
<script type="text/javascript">
    top.location.href = 'testzoekkomponist.php';
</script> 



Het is de eerste keer dat ik hier code neerzet, ik hoop dat het goed wordt weergeven.
je mist het woordje SET (regel 28)

op regel 58 zou ik de spatie voor $functie verwijderen.

Verder: http://wiki.pfz.nl/sqlinjectie
@Ivo hoe kan een waarde nu een probleem geven met gereserveerde woorden?

Anyway, @TS, het probleem is dat je UDPATE statement gewoon niet klopt. Het SET keyword ontbreekt

<?php
 mysql_query("UPDATE komponisten
        
        Titel='$Titel' ,
        Voornaam='$Voornaam' ,
                Tussenv='$Tussenv' ,
        Voorletters='$Voorletters',
                Achternaam='$Achternaam' ,
        Geslacht='$Geslacht' ,
                Gebortedatum='$Gebdatum' ,    
                Overlijdingsdatum='$Overldatum',
                Opmerking='$Opmerking'
                WHERE ID='$in'")
?>

Moet zijn:

<?php
 mysql_query("UPDATE komponisten
              SET
                Titel='$Titel' ,
                Voornaam='$Voornaam' ,
                Tussenv='$Tussenv' ,
                Voorletters='$Voorletters',
                Achternaam='$Achternaam' ,
                Geslacht='$Geslacht' ,
                Gebortedatum='$Gebdatum' ,    
                Overlijdingsdatum='$Overldatum',
                Opmerking='$Opmerking'
              WHERE ID='$in'")
?>
Het is gelukt :)

Super bedankt allemaal!!!!
mijn edit is wat naarboven terecht gekomen/:

http://wiki.pfz.nl/sqlinjectie

dat voorkomt problemen met namen waarin een ' zit. Bijvoorbeeld 's-Hertogenbosch
of bewuste pogingen tot hackeen.

---
De melding is trouwens "near ='Dr.'"

Dus als de kolomnaam bijvoorbeeld SUM is, dan zou mysql best eens bij de "=" kunnen gaan hikken over het niet aantreffen van een ( na de functienaam SUM

Reageren