Gå til innhold

Sjekke om en record allerede finnes i en rad (MYSQL)


Anbefalte innlegg

Videoannonse
Annonse
Skrevet

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.

Skrevet

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.

Skrevet
$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
}

Skrevet
$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 :)

Skrevet
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?

Skrevet

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.
Skrevet
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.

Skrevet

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.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...