Automatisch nieuwe rij in tabel (MySQL database, XAMPP)

Pagina: 1
Acties:
  • 333 views

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een probleem met het schrijven naar een tabel in mijn database voor een website die ik maak.
Ik kan er eenmalig inschrijven, maar als ik dan nog een keer wil schrijven, krijg ik een fout dat er geen vrije rij beschikbaar is:
Could not insert data because Duplicate entry '0' for key 'PRIMARY'

REGISTRATIENUMMER is aangeven als PRIMARY KEY

Nu is mijn vraag:
Hoe kan ik automatisch een rij toevoegen in een tabel, zodat ik de volgende keer zonder problemen in de tabel kan schrijven? En in elke rij het 'REGISTRATIENUMMER' automatisch wordt verhoogd.

Dit is de register.php
PHP:
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
<?php 

include("config.php"); 

// connect to the mysql server
$link = mysql_connect($server, $db_user, $db_pass)
or die ("Could not connect to mysql because ".mysql_error());

// select the database
mysql_select_db($database)
or die ("Could not select database because ".mysql_error());

// check if the username is taken
$check = "select REGISTRATIENUMMER from $table where GEBRUIKERSNAAM = '".$_POST['GEBRUIKERSNAAM']."';"; 
$qry = mysql_query($check)
or die ("Could not match data because ".mysql_error());
$num_rows = mysql_num_rows($qry); 
if ($num_rows != 0) { 
echo "Sorry, de gebruikersnaam: $GEBRUIKERSNAAM is al in gebruik.<br>";
echo "<a href=registreer.php>Kies een andere gebruikersnaam.</a>";
exit; 
} else {


// insert the data
$insert = mysql_query("insert into $table values ('NULL', '".$_POST['VOORNAAM']."', '".$_POST['ACHTERNAAM']."', '".$_POST['GESLACHT']."', '".$_POST['WOONPLAATS']."', '".$_POST['PROVINCIE']."', '".$_POST['HAARLENGTE']."', '".$_POST['HAARKLEUR']."', '".$_POST['OOGKLEUR']."', '".$_POST['STERRENBEELD']."', '".$_POST['DIERENVRIEND__WEL_NIET_']."', '".$_POST['OPLEIDINGSNIVEAU']."', '".$_POST['AFKOMST']."', '".$_POST['WACHTWOORD']."', '".$_POST['GEBRUIKERSNAAM']."', '".$_POST['LEEFTIJD']."')")
or die("Could not insert data because ".mysql_error());

// print a success message
echo "Je account is aangemaakt!<br>"; 
echo "Je kan nu <a href=login.php>inloggen</a>."; 
}

?>

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Je kunt dit beter aan de kant van je database regelen en van REGISTRATIENUMMER een auto_increment maken.

Als je met die termen op Google zoekt, kom je er volgens mij wel uit.


Edit: En dan ga ik hier nog niet eens op de overduidelijke SQL injection in natuurlijk. Ik denk dat je het beste even een goed boek of een goede tutorial kan zoeken, want je bent niet echt op de goede weg. Er zitten veel te veel klassieke WTF's in die je met het lezen van een goed stuk er zo uit kunt vissen.

[ Voor 48% gewijzigd door Davio op 30-11-2011 15:17 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb al geprobeerd een auto_increment te maken van REGISTRATIENUMMER, alleen dit wil niet lukken.
Ik krijg steeds dezelfde error:
Could not insert data because Duplicate entry '0' for key 'PRIMARY'

Als wat voor variabele moet ik REGISTRATIENUMMER definiëren?

Dit is mijn SQL query voor het aanmaken van de tabel:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE DATABASE `Datebase_RelatieWereld` ;

CREATE TABLE `PERSOON` (
   `REGISTRATIENUMMER` INTEGER NOT NULL,
   `VOORNAAM` VARCHAR ( 32 ) NOT NULL,
   `ACHTERNAAM` VARCHAR ( 32 ) NOT NULL,
   `GESLACHT` VARCHAR ( 32 ) NOT NULL,
   `WOONPLAATS` VARCHAR ( 32 ) NOT NULL,
   `PROVINCIE` VARCHAR ( 32 ) NOT NULL,
   `HAARLENGTE` VARCHAR ( 32 ) NOT NULL,
   `HAARKLEUR` VARCHAR ( 32 ) NOT NULL,
   `OOGKLEUR` VARCHAR ( 32 ) NOT NULL,
   `STERRENBEELD` VARCHAR ( 32 ) NOT NULL,
   `DIERENVRIEND__WEL_NIET_` VARCHAR ( 32 ) NOT NULL,
   `OPLEIDINGSNIVEAU` VARCHAR ( 32 ) NOT NULL,
   `AFKOMST` VARCHAR ( 32 ) NOT NULL,
   `WACHTWOORD` VARCHAR ( 16 ) NOT NULL,
   `GEBRUIKERSNAAM` VARCHAR ( 16 ) NOT NULL,
   `LEEFTIJD` VARCHAR ( 2 ) NOT NULL,
   PRIMARY KEY (`REGISTRATIENUMMER`) AUTOINCREMENT
)ENGINE = MYISAM;

Acties:
  • 0 Henk 'm!

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 16-08 21:48

TheLunatic

Ouwe boxen.

SQL:
1
insert into $table values ('NULL'

moet zijn
SQL:
1
insert into $table values (null

zonder de quotejes.

[ Voor 8% gewijzigd door TheLunatic op 30-11-2011 15:22 ]

Mother, will they like this song?


Acties:
  • 0 Henk 'm!

  • SumBeam
  • Registratie: Maart 2006
  • Laatst online: 05-09 15:39
Je MySQL query klopt ook niet... Dit is hem (getest). Zie de plaats van Auto increment

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE TABLE `PERSOON` ( 
   `REGISTRATIENUMMER` INTEGER NOT NULL AUTO_INCREMENT , 
   `VOORNAAM` VARCHAR ( 32 ) NOT NULL, 
   `ACHTERNAAM` VARCHAR ( 32 ) NOT NULL, 
   `GESLACHT` VARCHAR ( 32 ) NOT NULL, 
   `WOONPLAATS` VARCHAR ( 32 ) NOT NULL, 
   `PROVINCIE` VARCHAR ( 32 ) NOT NULL, 
   `HAARLENGTE` VARCHAR ( 32 ) NOT NULL, 
   `HAARKLEUR` VARCHAR ( 32 ) NOT NULL, 
   `OOGKLEUR` VARCHAR ( 32 ) NOT NULL, 
   `STERRENBEELD` VARCHAR ( 32 ) NOT NULL, 
   `DIERENVRIEND__WEL_NIET_` VARCHAR ( 32 ) NOT NULL, 
   `OPLEIDINGSNIVEAU` VARCHAR ( 32 ) NOT NULL, 
   `AFKOMST` VARCHAR ( 32 ) NOT NULL, 
   `WACHTWOORD` VARCHAR ( 16 ) NOT NULL, 
   `GEBRUIKERSNAAM` VARCHAR ( 16 ) NOT NULL, 
   `LEEFTIJD` VARCHAR ( 2 ) NOT NULL, 
   PRIMARY KEY (`REGISTRATIENUMMER`)
)ENGINE = MYISAM

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt allemaal! Het is gelukt!

Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 00:33

MueR

Admin Tweakers Discord

is niet lief

Juist. Dit is een geval van documentatie lezen. Een beetje meer eigen inzet mag best.

Anyone who gets in between me and my morning coffee should be insecure.

Pagina: 1

Dit topic is gesloten.