webForumDet fria alternativet

INSERT om inte finns

1 svar · 377 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 271 inlägg
#1

Jag hämtar lite data från olika CSV-filer, och sparar till mysql.
Nu undrar jag hur jag kollar om produkten redan finns, annars insert?

Testade med följande kod, men då stoppade scriptet efter ca 50 poster (varje gång), fast att jag VET att det finns fler. :x

$a = (@mysql_fetch_row(@mysql_query("select count(*) from produkter where TITLE = '$title' AND SHOP = '$shop'"))) or die(mysql_error());
	if ($a[0] != 0)
  	die("Produkten finns redan.");

	INSERT INTO produkter....

(Koden ovan körs i en loop.)
Får skylla på att jag är trött, och är nybörjare.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#2

Är TITLE unikt? Ange isf. den som nyckel (inte primary, utan t.ex. UNIQUE, sen kan du köra:

INSERT INTO tabell
(col1, col2, col3, ...)
VALUES
(
col1 = 'Namn',
col2 = 'Pris',
col3 = 'Bla bla'
) ON DUPLICATE KEY UPDATE
col2 = 'Annat pris',
col4 = 'foo bar'
....

Det som kommer hända är att produkter som inte finns läggs till, och blir det en "krock", (om namnet redan finns) så kan du istället uppdatera den befintliga posten.

För att hitta ev. fel i din kod får du lägga till nån sorts debug, t.ex. att "indata" skrivs ut i webbläsaren i varje loop, då ser du på vilken produkt det stannar och då hittar du säkert felet samtidigt. Omöjligt att gissa då vi inte ser mer av din kod.

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)