Php: if data exists in mysql

Status
Niet open voor verdere reacties.

indexspelen

Gebruiker
Lid geworden
17 mei 2008
Berichten
90
Ik heb een loginscript gemaakt ;)
Zover alles goed :D
Alles werkt trouwens ook ^^
Maar mijn register-systeem laat nog wat aan de wensen over.
Ik zou graag willen dat als de gebruikersnaam al bestaat in de table 'username'
dat er dan komt te staan: Gebruikersnaam bestaat al.
Dit heb ik zover:

PHP:
<?php
$con = mysql_connect("localhost","indexspelen_be","wachtwoord");
if ($_POST[naam] == "")
{
echo "Voer een naam in";
}
else if ($_POST[paswoord] == "")
{
echo "Voer een paswoord in";
}
else {
mysql_select_db("indexspelen_be",$con);
$sql="INSERT INTO users (username, password)
VALUES
('$_POST[naam]','$_POST[paswoord]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
else 
{
echo "Je bent nu geregistreerd.";
}
}
mysql_close($con);
?>
<br><a href="index.php">Keer terug</a> naar de homepage om in te loggen.

Ik heb een ideetje, maar ik twijfel of het de simpelste manier is:
Met SELECT kijken hoeveel keer die gebruikersnaam bestaat, en als dat >0 is, dan komt het bericht dat hij al bestaat.

Is dat de simpelste manier?
 
Ja, dat of gewoon proberen de gebruikersnaam uit de database te halen en achteraf kijken hoeveel rijen MySQL heeft gevonden. Maar plak wel LIMIT 1 achter je query. Onnodig als je username kolom een unieke waarde index heeft (wat wel handig is) maar het is geen slechte gewoonte om LIMIT 1 achter queries te plakken waar het kan.

Overigens zou ik snel overstappen anar de mysqli PHP module nu je script nog niet heel uitgebreid is. Deze module is erg veel beter dan de mysql_ module en wordt ook nog verder ontwikkeld.

Ook is het handig je gebruikers allemaal een ID te geven inplaats van alleen een naam, maar dat doe je misschien al :rolleyes:
 
Laatst bewerkt:
Ik hou mijn scripts inderdaad graag simpel ^^
Wat trouwens ook logisch is, niet?

En de gebruikers hebben overigens inderdaad een uniek id. ( auto incr )
Maar dan zal ik maar eens een poging proberen om dat script tegoei te krijgen :)
 
De enige juiste manier is door een UNIQUE-constraint op het betreffende veld te zetten, gewoon de INSERT te doen en vervolgens met mysql_errno() kijken of hij een 'Duplicate entry key'-error teruggeeft. Als je een SELECT uitvoert heb je altijd het risico dat tussen de SELECT en INSERT nog een ander record wordt ingevoerd, tenzij je de tabellen lockt, maar dat wil je niet.
 
De enige juiste manier is door een UNIQUE-constraint op het betreffende veld te zetten, gewoon de INSERT te doen en vervolgens met mysql_errno() kijken of hij een 'Duplicate entry key'-error teruggeeft. Als je een SELECT uitvoert heb je altijd het risico dat tussen de SELECT en INSERT nog een ander record wordt ingevoerd, tenzij je de tabellen lockt, maar dat wil je niet.

Daar begrijp ik nu niks van :p
Waarschijnlijk binnen een maand ofzo wel ;)
Maar ik ga het toch eerst even met select & insert proberen ^^
 
Hij bedoelt dat je het gewoon aan mySQL over moet laten... je zet een beperking op de tabel dat elke gebruikersnaam maar 1x voor mag komen, en daarna gooi je gewoon de nieuwe gebruikersnaam erin... als het systeem vervolgens een error gooit ("Duplicate key entry", oftewel: je probeert iets toe te voegen dat al bestaat) dan weet je dat er iets fout is.

Op die manier kan er nooit iets fout gaan, omdat je de database zelf zijn data laat bewaken.
 
Ahja, dat lijkt ook wel een goede manier :p
Maar ik zou het toch liever met php doen.
Dus ik ga voor mijn manier ^^
Die trouwens vrij goed lukt :p
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan