Syntax error

Status
Niet open voor verdere reacties.

djemer

Gebruiker
Lid geworden
13 jun 2011
Berichten
40
Beste,

Ik ben bezig met een simpel script om docenten in een database te zetten, maar ik krijg continue de volgende syntax error:
Code:
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 '1' at line 1

Het betreffende script is als volgt:
PHP:
<?php
// connectie maken met database
    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
		
    mysql_connect("$dbhost","$dbuser","$dbpass") or die(mysql_error());
    mysql_select_db("vsm") or die(mysql_error());

// variabelen definiëren
  $dnumm = $_POST["dnumm"];
  $vnaam = $_POST["vnaam"];
  $tussv = $_POST["tussv"];
  $anaam = $_POST["anaam"];
	
  $query = mysql_query("INSERT INTO Docenten(Docentnummer,Voornaam,Tussenvoegsel,Achternaam) VALUES('$dnumm','$vnaam','$tussv','$anaam')");
  $sql = mysql_query("SELECT * FROM Docenten WHERE Docentnummer = '".$dnumm."'");
	
// kijken of het docentnummer al voorkomt in de database
  if(mysql_num_rows($sql)== 1){
	  
		// indien het docentnummer voorkomt:
	        die("Dit docentnummer komt al voor in de database.");
		}
	else{
	
	        // indien het docentnummer nog niet voorkomt:
	        mysql_query($query) or die(mysql_error());
		echo "$vnaam $tussv $anaam is toegevoegd aan de database.";
		}

?>

Ik kan de error zelf niet vinden. Naar mijn mening ligt de fout bij de mysql_num_rows, maar ik heb daarmee allerlei mogelijkheden tevergeefs geprobeerd. Als één van jullie de error wel zou kunnen vinden, zou ik diegene zeer dankbaar zijn!

Bij voorbaat dank!
 
Laatst bewerkt:
De fout komt van regel 28. Dat is immers de enige regel waar mysql_error() in voorkomt en de foutmelding die je toont komt van mysql_error. Het probleem is dat je op regel 16 al de query uitvoert, je gebruikt daar mysql_query. Het resultaat van die query zet je in de variabele $query. Op regel 28 probeer je dit resultaat (meestal iets als "Resource #1") als query uit te voeren en dat lukt niet. Sowieso wil je op regel 16 die query niet uitvoeren, omdat de controle van regel 17 dan niet meer nodig is.

Overigens, een andere manier om dit te doen is de kolom Docentnummer uniek te maken (een uniqueness constraint geven), de INSERT-query uitvoeren en controleren of dit een foutmelding oplevert en zo ja of die foutmelding veroorzaakt wordt door de uniqueness constraint. Op die manier heb je maar 1 query nodig en voorkom je een race condition. Al zal dat laatste in dit geval niet zo'n probleem zijn.
 
Laatst bewerkt:
Bedankt, het werkt!
Het was dom van me het resultaat uit te voeren als query.. :rolleyes:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan