Ik ben begonnen met mysql, maar hij geeft een syntax error op line 1. deze error:
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 '' at line 1

Dit is de code:


<?php

$id = $_GET["id"];

if ($id = "")
{
	header("location: medewerkers_tonen.php");	
}

$connect = @mysql_connect("GEHEIM","GEHEIM","GEHEIM")
or die("Kan geen verbinding met de server maken");

@mysql_select_db("GEHEIM",$connect)
or die("Kan de database niet vinden");

$query = "SELECT * FROM medewerkers WHERE id=$id";

$result = @mysql_query($query,$connect)
or die(mysql_error());

$id 			= mysql_result($result,0,"id");
$voornaam 		= mysql_result($result,0,"voornaam");
$achternaam 	= mysql_result($result,0,"achternaam");
$afdeling 		= mysql_result($result,0,"afdeling");
$toestelnummer 	= mysql_result($result,0,"toestelnummer");	

mysql_close($connect);

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>

<form action="medewerker_aanpassen.php" method="post">
<input type="hidden" name="id" value="<?php echo $id ?>" />

<table>

<tr>
	<th>Voornaam:</th>
    <td><input type="text" name="voornaam" value="<?php echo $voornaam; ?>" /></td>
</tr>

<tr>
	<th>Achternaam:</th>
    <td><input type="text" name="achternaam" value="<?php echo $achternaam; ?>" /></td>
</tr>

<tr>
	<th>Afdeling:</th>
    <td><input type="text" name="afdeling" value="<?php echo $afdeling; ?>" /></td>
</tr>

<tr>
	<th>Toestelnummer:</th>
    <td><input type="text" name="toestelnummer" value="<?php echo $toestelnummer; ?>" /></td>
</tr>

<tr>
	<th>&nbsp;</th>
    <td>
    	<input type="submit" name="action" value="Aanpassen" />
        <input type="submit" name="action" value="Verwijderen" onclick="return confirm('Weet u zeker dat u deze persoon wilt verijderen?')"
    </td>
</tr>

</table>

</form>

</body>
</html>
Kijk eens goed naar regel 5.
Ja die lege ""
maar dat is toch gewoon goed?

En waarom staat er btw dan regel in die fout?
if ($id = "") => hier vul je $id met een lege string.
if ($id == "") => hier kijk je of ze hetzelfde zijn.
Verder worden VALUES, zoals $id tussen singlequotes, en de variabelen buiten quotes.
Dan wordt het dus:


$query = "SELECT * FROM medewerkers WHERE id='".$id."'";


Als je het nog beter wilt doen, gebruik je gewoon direct je $_GET-variabele, zodat je dit krijgt. Op die manier hoef je de waarde uit $_GET niet te kopiëren naar $id.


$query = "SELECT * FROM medewerkers WHERE id='".$_GET['id']."'";


Maar wacht.... Is het nog niet helemaal af, want ik mis beveiliging tegen SQL-injection.

We gaan nog eventjes verder, zodat we dit krijgen:


$query = "SELECT * FROM medewerkers WHERE id='".mysql_real_escape_string($_GET['id'])."'";


Trouwens, waarom gebruik je mysql_result,() of je velden op te halen? Je kan ook prima mysql_fetch_assoc() gebruiken. Dan heb je alle velden in een array staan zoals: $item['toestelnummer']. En dit is veel sneller...
Dit wat jij nu doet werd nog toegepast in PHP 3, zo'n 12 jaar geleden ;-).


Reageren