Gå til innhold

Finne ut om data finnes i MySQL allerede


Anbefalte innlegg

Skrevet

Hei...

 

Holder på å legge til noen epostadresser i en tabell, og lurer på hva den letteste måten er å sjekke om epostadressen allerede er lagt til i feltet ´epost´.

 

Noen som har noen forslag?

 

Mvh

Pål Drange

Videoannonse
Annonse
Skrevet (endret)

$q=mysql_query("SELECT mail FROM tabell WHERE mail = $mail");
if(mysql_num_rows($q) > 0){ echo "feilmelding hvis e-posten finnes"; }

Mener denne er ganske bra jeg :)

 

edit: eller kanskje ikke?

lar den stå ihvertfall.

 

edit2: glemte semikolon

Endret av LoS
Skrevet

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /customers/adresse on line 27 :shrug:

Skrevet

Mye enklere å gjøre feltet unikt - da setter du bare en test på queryen for å sjekke at den er true - fordelen er at du slipper du å kjøre flere spørringer enn nødvendig.

Skrevet
Mye enklere å gjøre feltet unikt - da setter du bare en test på queryen for å sjekke at den er true - fordelen er at du slipper du å kjøre flere spørringer enn nødvendig.

God idé! At jeg ikke tenkte på det! :D

 

Men hvordan blir det med feilmeldinger da? Kommer det bare en mysql_error() ?

 

 

 

LoS:

Det var ihvertfall en god tanke... Og, ja, merket ;-feilen, og fant den før lang tid var gått... ;)

Skrevet

Du burde alltid sjekke om en spørring, spesielt INSERT, ble gjennomført. Ellers vet du ikke om data en besøkende registrerer blir lagret. Bruk f.eks. mysql_affected_rows(). Bruk den sammen med mysql_errno så kan du informere brukeren om hvorfor data ikke ble lagret.

Skrevet
Eller bare:

if (mysql_query("INSERT INTO ........"))

Nope ;)

Det er mange som gjøre det, men det er en dårlig måte å sjekke på. Den returnerer kun false dersom det er en error. Glem ikke at det kan finnes andre årsaker til at data ikke blir lagret.

Skrevet

Er ikke en bra metode.

Men den absolutt enkleste. Den vil returnere true om data blir lagret, og false om de ikke blir lagret. Grunnen til at de ikke blir lagret får du jo ikke vite da. Personlig har jeg sjelden behov for grunnen, enten er det pga måten mysql tabellen er bygd opp med unike felt som gjør at det ikke kan lagres. Eller så er det en feil i spørringen.

Feil i spørringen rettes kjapt opp. Hvilke andre grunner kan det være at spørringen ikke "lykkes" da?

 

Ellers så bruker jeg mysql_affected_rows om jeg må være virkelig sikker på at en post faktisk ble endret/skrevet. Men vil ikke si at du ikke kan gjøre det med metoden jeg nevnte. ;)

Skrevet

På den delen med unike felter vil den fungere, men som du selv sier "Er ikke en bra metode". Når du har utviklet en den større scripts vil du fort finne ut at ting er ikke alltid like stabile når de har mange besøkende. Grunner til at en query ikke returnerer false kan være alt fra at du har sletter $query, bruker feil query til at det rett og slett oppstår en feil mellom php og mysql - som du sikkert skjønner så finnes det utallige muligheter.

 

Du kan gjerne bruke if($result, men hvorfor gjøre det når den ikke er like effektiv?

Skrevet

Jeg regner ikke feil i koden som feil. Jeg tenker på det ferdige produktet.

Skal du først være sikker så bør man jo også da hente ut kolonnen man skrev, for så å sjekke den mot det man ønsket å skrive. Men det må nesten tilpasses etter hvor viktig akkurat den spørringen er. Og i visse tilfeller, så kan det holde å bruke den enkle if setning metoden.

Men er nok ikke så mye å diskutere egentlig. Tror egetnlig vi mener omtrent det samme uansett :)

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...