kake_fisk Skrevet 6. august 2009 Del Skrevet 6. august 2009 Hvordan kan jeg sjekke om en record allerede finnes i en bestemt rad? Lenke til kommentar
Zic0 Skrevet 6. august 2009 Del Skrevet 6. august 2009 Du kan bruke mysql_num_rows() til å se hvor mange rader som blir berørt av din SQL spørring. Er det over => 1 sier det seg selv at det eksisterer. Lenke til kommentar
kake_fisk Skrevet 6. august 2009 Forfatter Del Skrevet 6. august 2009 Jeg fiksa det btw. Her er det jeg har prøvd: $res=mysql_query("SELECT * FROM rating"); while ($row=mysql_fetch_array($res)) { if ($row['ip'] != $ip) { $ip_exsist=0; } else { $ip_exsist=1; break; } } if ($ip_exsist) { //sett inn ny } Jeg måtte sjekke om !$ip_exists. Men takk for at du replya. Lenke til kommentar
Alex Moran Skrevet 6. august 2009 Del Skrevet 6. august 2009 Det der er en fryktelig dårlig løsning. Lenke til kommentar
OIS Skrevet 6. august 2009 Del Skrevet 6. august 2009 $ip_exsist = false; $res = mysql_query('SELECT ip FROM rating where ip = "' . mysql_real_escape_string($ip) . '" limit 1'); if (false !== $res) { $ip_exists = (bool) mysql_num_rows($res); } else { //error management ? } if ($ip_exsist) { //sett inn ny } Lenke til kommentar
oxodesign Skrevet 6. august 2009 Del Skrevet 6. august 2009 $ip_exsist = false; $res = mysql_query('SELECT ip FROM rating where ip = "' . mysql_real_escape_string($ip) . '" limit 1'); if (false !== $res) { $ip_exists = (bool) mysql_num_rows($res); } else { //error management ? } if ($ip_exsist) { //sett inn ny } Ta en tit på REPLACE funksjonen i MYSQL den inserter updaterer en rad. Da slipper du å kjøre 2 queries Lenke til kommentar
OIS Skrevet 6. august 2009 Del Skrevet 6. august 2009 Ta en tit på REPLACE funksjonen i MYSQL den inserter updaterer en rad. Da slipper du å kjøre 2 queries Det virker vel bare hvis feltet ip er primary key eller unique? Lenke til kommentar
Ernie Skrevet 6. august 2009 Del Skrevet 6. august 2009 Jo, den vil bare erstatte rader hvor verdien i et unikt felt er likt. Ikke bare det, men hvorfor skal man bruke REPLACE (som effektivt er det samme som DELETE og INSERT) når man kan bruke INSERT ... ON DUPLICATE KEY UPDATE? Ta en tit på REPLACE funksjonen i MYSQL den inserter updaterer en rad. Da slipper du å kjøre 2 queries Ikke akkurat. Når REPLACE støter på en rad med samme verdi i et unikt felt fjerner den først raden for så å sette inn sin egen. Du som utvikler skriver bare en spørring, men internt gjøres det effektivt to alikevel. Lenke til kommentar
oxodesign Skrevet 6. august 2009 Del Skrevet 6. august 2009 Jo, den vil bare erstatte rader hvor verdien i et unikt felt er likt. Ikke bare det, men hvorfor skal man bruke REPLACE (som effektivt er det samme som DELETE og INSERT) når man kan bruke INSERT ... ON DUPLICATE KEY UPDATE? Ta en tit på REPLACE funksjonen i MYSQL den inserter updaterer en rad. Da slipper du å kjøre 2 queries Ikke akkurat. Når REPLACE støter på en rad med samme verdi i et unikt felt fjerner den først raden for så å sette inn sin egen. Du som utvikler skriver bare en spørring, men internt gjøres det effektivt to alikevel. Ernie jeg er enig med deg og riktig vei er å bruke "INSERT ON DUPLICATE" men dessverre så glemte jeg å nevne det i stad, grunnen til det er vel at jeg ikke har brukt så ofte denne funksjonen fordi REPLACE var alltid med i MySQL i hverfall siden v3.1, mens INSERT ON DUPLICATE kom i versjon 4.1. Lenke til kommentar
kake_fisk Skrevet 7. august 2009 Forfatter Del Skrevet 7. august 2009 Egentlig så skjønnte jeg ikke helt hva den gjorde og hvordan man bruker den ut fra referencen. Kunne noen forklare meg hvordan jeg bruker den? Btw, Jeg gjør dette for å sjekke om ip-en ikke allerede er i databasen. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå