Gå til innhold

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


Anbefalte innlegg

Videoannonse
Annonse

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

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

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