Syntax error in SQL Database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jerry php

Jerry php

17/10/2011 23:36:35
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?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>
Gewijzigd op 18/10/2011 12:18:45 door Jerry php
 
PHP hulp

PHP hulp

26/04/2024 15:58:07
 
Dos Moonen

Dos Moonen

17/10/2011 23:51:21
Quote Anchor link
Kijk eens goed naar regel 5.
 
Jerry php

Jerry php

17/10/2011 23:52:35
Quote Anchor link
Ja die lege ""
maar dat is toch gewoon goed?

En waarom staat er btw dan regel in die fout?
 
- SanThe -

- SanThe -

18/10/2011 00:39:49
Quote Anchor link
if ($id = "") => hier vul je $id met een lege string.
if ($id == "") => hier kijk je of ze hetzelfde zijn.
 
- Ariën  -
Beheerder

- Ariën -

18/10/2011 08:20:23
Quote Anchor link
Verder worden VALUES, zoals $id tussen singlequotes, en de variabelen buiten quotes.
Dan wordt het dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$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 ;-).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.