Syntax error in SQL Database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack Developer-/ in (w/m/d) in Vollzeit

Wer sind wir? agriportance GmbH ist ein junges Start-Up Unternehmen und die Plattform für den erneuerbaren Treibstoff Biomethan/Bio-LNG mit Sitz in Münster. Als solche vermitteln wir Biomethan von landwirtschaftlichen geprägten Produzenten an Abnehmer aus dem Energiesektor und begleiten die notwendige Nachhaltigkeitszertifizierung. Da die Nachfrage nach Biomethan immer weiter steigen wird, sehen wir uns als Zukunftsorientierter und spannender Arbeitsgeber. Für weitere Informationen schau dir gerne unsere Website an: https://agriportance.com Zur Vergrößerung unseres Teams suchen wir zum nächstmöglichen Zeitpunkt einen engagierten Full Stack Developer-/ in (w/m/d) in Vollzeit Unser Team sucht sowohl Berufseinsteiger als auch erfahrene Mitarbeiter, denn jeder findet bei agriportance

Bekijk vacature »

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

03/12/2022 23:56:33
 
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.