Avatar billede marville Nybegynder
21. april 2005 - 23:28 Der er 8 kommentarer og
1 løsning

UNIQUE - Få svar fra

Jeg har en PHP -fil der opretter en bruger, 'name' . Der er UNIQUE. Hvis jeg opretter navnet "Marville" og opretter Marville igen; gør den som den skal. MEN hvordan spørger jeg via en PHP fil om navnet allerede eksisterer i databasen ? altså :
if("Marville" == Kig i databasen og findes){
print "bruger findes allerede"
}
Håber det giver mening! Im really lost !
Avatar billede dennismp Nybegynder
21. april 2005 - 23:39 #1
Du prøver at lave en insert og ser hvad der sker. Det er den sikre måde.. fx

mysql_query("INSERT INTO ...");

if( mysql_errno() == 1062 ) {
  // Navnet er optaget
}
Avatar billede ranglen Nybegynder
21. april 2005 - 23:39 #2
$q = mysql_query("select count(*) from brugere where navn='marville'");
$row = mysql_fetch_row($q);

if(intval($row[0]) == 1){
    print "bruger findes allerede";
}
Avatar billede dennismp Nybegynder
21. april 2005 - 23:41 #3
Alternativt laver du en alm. select og tjekker om der findes en række i forvejen

$res = mysql_query("SELECT 1 FROM bruger WHERE usename='$username") or die(mysql_error());

if( $res && mysql_fetch_assoc($row) ) {
  // navnet er optaget
}

du skal så lige huske at escape $username før du smider din i sql'en..
Avatar billede marville Nybegynder
21. april 2005 - 23:58 #4
ok .. Noget har jeg fået ud af det ..
Men det er udfra et overordnet resultet jeg vil sige " Navnet optaget" ikke bare fra Marville !

Det som jeg har skrevet er:
<?PHP

$var1 =  $_REQUEST['name'];
$var2 =  $_REQUEST['score'];
mysql_connect("localhost","****","******");
mysql_select_db("*****");
mysql_query("INSERT INTO hiscore (name, score)values('$var1','$var2')") or die(mysql_error());
echo "Hello $var1, you are add´et";

?>

Jeg er en newbie indenfor PHP - så sorry folks !
Avatar billede dennismp Nybegynder
22. april 2005 - 00:00 #5
<?PHP

$var1 =  $_REQUEST['name'];
$var2 =  $_REQUEST['score'];
mysql_connect("localhost","****","******");
mysql_select_db("*****");
$res = mysql_query("INSERT INTO hiscore (name, score)values('$var1','$var2')");

if( $res ) {
  echo "Hello $var1, you are add´et";
}
elseif( mysql_errno() == 1062 ) {
  // Duplicate due to a unique contraint.
  echo "Username $var1 already exists";
}
else {
  // all other errors
  die(mysql_error());
}

?>
Avatar billede marville Nybegynder
22. april 2005 - 00:06 #6
Det jo for sejt ... errno() er det en funktion i SQL ? og 1062 whats that ?
Håber du gider svare - Anywho Det kører nu! Point til dig ...
Avatar billede dennismp Nybegynder
22. april 2005 - 00:12 #7
1062 er koden for fejlen der fortæller dig at der er dupletter i din kolonne (som dermed er unique, da det ellers ikke ville ske). Du kunne også bruge mysql_error() == "Duplicate entry ..." istedet, men hvis mysql så snakker dansk, så virker det ikke.  1062 er bare en nummerisk værdi for den fejl mysql_error() vil give dig. Fejlmeddelelserfra  mysql_error() har et nummer som du kan få ved mysql_errno().

Du kan se fejlkoderne her:
http://dev.mysql.com/doc/mysql/en/error-handling.html
Avatar billede marville Nybegynder
22. april 2005 - 00:15 #8
1000 tak for hjælpen .. Jeg er klar igen !
Avatar billede dennismp Nybegynder
22. april 2005 - 00:24 #9
Held og lykke med koderiet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester