Error in SQL syntax, formulier verzend niet!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis Driessen

Dennis Driessen

18/02/2008 09:59:00
Quote Anchor link
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
<?

include 'mysql.php';

// formulier POST variabelen ophalen

$voornaam = $_POST['voornaam'];
$achternaam = $_POST['achternaam'];
$tussenvoegsel = $_POST['tussenvoegsel'];
$email = $_POST['email'];
$school = $_POST['school'];
$k1 = $_POST['k1'];
$k2 = $_POST['k2'];
$k3 = $_POST['k3'];
$k4 = $_POST['k4'];
$k5 = $_POST['k5'];
$k6 = $_POST['k6'];
$k7 = $_POST['k7'];
$k8 = $_POST['k8'];
$k9 = $_POST['k9'];
$k10 = $_POST['k10'];
$k11 = $_POST['k11'];
$k12 = $_POST['k12'];
$k13 = $_POST['k13'];
$k14 = $_POST['k14'];
$k15 = $_POST['k15'];
$k16 = $_POST['k16'];
$k17 = $_POST['k17'];
$k18 = $_POST['k18'];
$k19 = $_POST['k19'];
$k20 = $_POST['k20'];
$k21 = $_POST['k21'];
$r1 = $_POST['r1'];
$r2 = $_POST['r2'];
$r3 = $_POST['r3'];
$r4 = $_POST['r4'];
$r5 = $_POST['r5'];
$r6 = $_POST['r6'];
$r7 = $_POST['r7'];
$r8 = $_POST['r8'];
$r9 = $_POST['r9'];
$r10 = $_POST['r10'];
$r11 = $_POST['r11'];
$r12 = $_POST['r12'];
$r13 = $_POST['r13'];
$r14 = $_POST['r14'];
$r15 = $_POST['r15'];
$r16 = $_POST['r16'];
$r17 = $_POST['r17'];
$r18 = $_POST['r18'];
$r19 = $_POST['r19'];
$r20 = $_POST['r20'];
$r21 = $_POST['r21'];

// unix timestamp om het tijdstip de van de boodschap op te slaan.

$time= time();

// sql insert die je in de database gaat doen

$sql ="INSERT INTO gastenboek(voornaam, tussenvoegsel, achternaam, school, email, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21');
VALUES ('"
.$voornaam."', '".$tussenvoegsel."', '".$achternaam."', '".$school."', '".$email."', '".$k1."', '".$k2."', '".$k3."', '".$k4."', '".$k5."', '".$k6."', '".$k7."', '".$k8."', '".$k9."', '".$k10."', '".$k11."', '".$k12."', '".$k13."', '".$k14."', '".$k15."', '".$k16."', '".$k17."', '".$k18."', '".$k19."', '".$k20."', '".$k21."', '".$r1."', '".$r2."', '".$r3."', '".$r4."', '".$r5."', '".$r6."', '".$r7."', '".$r8."', '".$r9."', '".$r10."', '".$r11."', '".$r12."', '".$r13."', '".$r14."', '".$r15."', '".$r16."', '".$r17."', '".$r18."', '".$r19."', '".$r20."', '".$r21."')";

//uitvoeren van de query :

if (!($temp = mysql_query($sql,$connection)))
showerror();
?>


Dat is de code voor het formulier. (hier te bekijken). Als ik invul en verzend krijg ik de hele tijd een error.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Error1064 : 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 '; VALUES ('test', 'test', 'test', 'sintjan', '[email protected]', '', '',' at line 1


Ik heb links en rechts wat rondgekeken en het zal waarschijnlijk wel weer een domme fout zijn, maar ik zie hem maar niet.
 
PHP hulp

PHP hulp

07/05/2024 19:52:21
 
Winkie

winkie

18/02/2008 10:04:00
Quote Anchor link
Version mismatch?
Google anders op Error 1064.
Het ligt iig wel aan je syntax.
Gewijzigd op 01/01/1970 01:00:00 door winkie
 
Robert Deiman

Robert Deiman

18/02/2008 10:11:00
Quote Anchor link
Weet je het zeker winkie? Er hoort namelijk geen ; voor VALUES te staan. Een ; is een "sluitteken" bij een query.
 
Lode

Lode

18/02/2008 10:11:00
Quote Anchor link
klakkeloos die hele array in $vars zetten lijks me zoiezo overbodig...

timestamps zijn echt uit de 20e eeuw
geen validatie
geen mysql_real_escape_string();
 
Jacco Engel

Jacco Engel

18/02/2008 10:12:00
Quote Anchor link
INSERT INTO table (veld1) ; VALUES ("waarde1")

een ; in je query gaat niet goed.


Die er uit halen == probleem opgelost denk ik
 
Dennis Driessen

Dennis Driessen

18/02/2008 11:15:00
Quote Anchor link
Haha, dat was alles inderdaad. Eén ; was het probleem.
Ik moet nu nog effe zien in te stellen dat sommige workshops maar een aantal keer gekozen kunnen worden, dat er maar een keer per e-mailadres gekozen kan worden en dat er een bevestiging komt.
 
Frank -

Frank -

18/02/2008 11:42:00
Quote Anchor link
Wat dacht je van normaliseren? De database is gewoon fout.

Edit: Het datamodel is fout, jouw kolomnamen zijn verboden en ze slaan nergens op. Gooi je huidige database weg, dan kun je snel met een schone lei beginnen.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Dennis Driessen

Dennis Driessen

18/02/2008 11:56:00
Quote Anchor link
Hoe slaan ze nergens op? R5 is Reserve 5. K5 is Keuze 5?
Is toch logisch?
 
Terence Hersbach

Terence Hersbach

18/02/2008 12:01:00
Quote Anchor link
zelfs dat niet. Maak een aparte tabel daarvoor aan, of, geef hetgeen wat je wilt bereiken in dit topic en er zal vast iemand zijn die jou het juiste datamodel geeft.
 
Robert Deiman

Robert Deiman

18/02/2008 12:01:00
Quote Anchor link
@Dennis

- Kolom namen mogen niet uit alleen cijfers bestaan
- Als je nu een reactie extra wil hebben, moet jij je tabel aanpassen
- Ga de hele inhoud eens normaliseren, dan kom je op heel wat anders uit
- Je query's worden er ook nog eens korter en overzichtelijker van
 
Lode

Lode

18/02/2008 12:20:00
Quote Anchor link
En als je dan denkt het licht gezien te hebben kan je met innoDB aan de slag... Als je dat al niet was...
En als je daar ook lampje ziet naar pgSQL ... ^^
 
Frank -

Frank -

18/02/2008 12:24:00
Quote Anchor link
Lode schreef op 18.02.2008 12:20:
En als je dan denkt het licht gezien te hebben kan je met innoDB aan de slag... Als je dat al niet was...
En als je daar ook lampje ziet naar pgSQL ... ^^
Kortom, ga direct met PostgreSQL aan de slag. Om nu eerst alle beginnersfouten te gaan maken... Sla die stap maar over! Er is niks mis mee om te leren van andermans fouten, dat scheelt jou een hele hoop tijd en frustratie.

;)
 
Lode

Lode

18/02/2008 13:14:00
Quote Anchor link
ik spring altijd in het diepe inderdaad...
Maar als je geen basis kennis SQL hebt en/of genoeg tijd is het wellicht een beetje van de hoge duikplank afspringen....
 
Frank -

Frank -

18/02/2008 13:18:00
Quote Anchor link
Lode schreef op 18.02.2008 13:14:
ik spring altijd in het diepe inderdaad...
Maar als je geen basis kennis SQL hebt en/of genoeg tijd is het wellicht een beetje van de hoge duikplank afspringen....
MySQL is als een zwembad zonder water: Veel inhoud heeft het niet en het gaat zeer doen op het moment dat je daar achter komt ;)
 
Dennis Driessen

Dennis Driessen

18/02/2008 13:50:00
Quote Anchor link
Robert_Deiman schreef op 18.02.2008 12:01:
@Dennis

- Kolom namen mogen niet uit alleen cijfers bestaan
- Als je nu een reactie extra wil hebben, moet jij je tabel aanpassen
- Ga de hele inhoud eens normaliseren, dan kom je op heel wat anders uit
- Je query's worden er ook nog eens korter en overzichtelijker van


Er is toch geen kolom die alleen uit cijfers bestaat?
Het is k1 of r1 (keuze 1 of reserve 1).
Kijk ik exporteer de database uiteindelijk naar CSV voor te importeren in MS Access. Daar heb ik alles mooi in een werkblad.

Ik wil graag geloven in normaliseren, maar ik zie eigenlijk nog niet echt in waarom.
Dat is toch alleen maar meer werk met kopellen enzo?
Ik ga me er in ieder geval even in verdiepen.
 
Dennis Driessen

Dennis Driessen

18/02/2008 13:52:00
Quote Anchor link
Terence schreef op 18.02.2008 12:01:
zelfs dat niet. Maak een aparte tabel daarvoor aan, of, geef hetgeen wat je wilt bereiken in dit topic en er zal vast iemand zijn die jou het juiste datamodel geeft.


Er moeten zich zo'n 300 leraren inschrijven voor workshops,
Dit heb ik graag overzichtelijk uiteindelijk in MS Access. Wat aardig lukt op het moment vind ik zelf, als ik CSV importeer in Access.
Het is gewoon van belang dat ik weet wie zich heeft ingeschreven voor welke workshop.
 
Frank -

Frank -

18/02/2008 14:14:00
Quote Anchor link
workshops:
id
naam

docenten:
id
naam

workshop_docent
id_workshop (foreign key op de tabel workshops)
id_docent (foreign key op de tabel docenten)

In MySQL ben je verplicht om de innoDB-engine te gebruiken, met MyISAM kun je namelijk geen relationele database aanmaken.
 
Terence Hersbach

Terence Hersbach

18/02/2008 14:16:00
Quote Anchor link
Dennis Driessen schreef op 18.02.2008 13:52:
Er moeten zich zo'n 300 leraren inschrijven voor workshops,
Dit heb ik graag overzichtelijk uiteindelijk in MS Access. Wat aardig lukt op het moment vind ik zelf, als ik CSV importeer in Access.
Het is gewoon van belang dat ik weet wie zich heeft ingeschreven voor welke workshop.


waarom wil je het overzichtelijk hebben in acces en gebruik je hier php niet voor? bovendien, je database kijk je alleen bij het begin naar, de rest doe je vanaf dat moment met je eigen geschreven pagina's om de tabel uit te lezen. Overzichtelijk in de database zetten werkt niet. Overzichtelijk gegevens weergeven in een pagina wel.
 



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.