Avatar billede ahrensberg Nybegynder
11. februar 2007 - 02:27 Der er 2 kommentarer og
1 løsning

Fejlbeskrivelse for unikt felt

Hej alle

Når jeg i min database prøver at gemme til et unikt felt, med samme indhold som allerede gemt, fejler dette selvfølgelig. Jeg kan med "mysql_errno()" tjekke for om dette rent faktisk sker (fejlkode 1062), men hvordan får jeg at vide i hvilket felt det er sket?

Jeg har flere unikke felter (bl.a. id-nummer og navn), og vil gerne kunne udskrive den korrekte fejlbeskrivelse. Derfor skal jeg vide i hvilket felt der fejlede. Jeg kan med "mysql_error()" få det beskrevet med teksten "Duplicate entry '%s' for key %d", men får jeg denne værdi ud? Det skulle gerne kunne lade sig gøre uden f.eks. at være nødt til at hive det ud af denne tekst med split.

Jeg kan for god ordens skyld lige nævne at jeg problemet ikke kan løses ved at køre auto-incremet på id-nummeret, da data til begge felter stammer fra andet sted.
Avatar billede coderdk Praktikant
11. februar 2007 - 02:58 #1
Det tror jeg nu ikke du kan få at vide på anden måde end mysql_error()... Du kan evt:

if ( mysql_errno() == 1062 )
{
  preg_match( "/^Duplicate entry '(.*)' for key (.*)$/i", mysql_error(), $m );
  $entry = $m[1];
  $field = $m[2];
}

Noget du kan bruge? Du får et svar - Du kan bare afvise hvis det er :)
Avatar billede ahrensberg Nybegynder
11. februar 2007 - 10:38 #2
Ærgerligt at det ikke kan lade sig gøre uden. Hvis MySQL skulle ændre deres fejlbeskrivelser. :o)

Men takker for hjælpen, så bruger jeg dit svar! ;o)
Avatar billede arne_v Ekspert
12. februar 2007 - 00:57 #3
pas på den dag, hvor du skifter database version eller endda database, så er antagelser
om tekst format af fejl farlige

hvis det sker sjældent kunne du lave nogle SELECT for at finde synderen
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
Computerworld tilbyder specialiserede kurser i database-management

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