Just nu i M3-nätverket
Jump to content

Uppdatera/lägga in värde?


menJada1

Recommended Posts

Goddag på er!

 

Min fråga är! Om jag vill uppdatera ett värde i en tabell. Men om värdet saknas. Kan jag då istället lägga till den?

 

EX.

$sql = "UPDATE Tabell SET column1 = '$column1'WHERE id = '$id'";

$que = mysql_query($sql);

 

Om id inte finns i tabellen kan den då istället för att uppatera något som inte finns skapa raden istället. Går det göra detta med någon typ av if-sats?

 

Tacksam för hjälp.

Link to comment
Share on other sites

Tjao, du kan ju alltid göra en select först för att se om id't finns. Då vet du ju om du ska uppdatera eller göra en insert.

 

--

Some say I am crazy.. but the Voices in my head disagree...

 

Link to comment
Share on other sites

Som typ då:

select id FROM tabell

och sedan en if stats för att bestämma om id är mer eller mindre än O då.

 

Och beroende på det välja nu sql sats?

 

Finns det inget lättare/snabbare altternativ?

 

Link to comment
Share on other sites

Dy kan också använda dig av MySQLs REPLACE kommando. Då krävs det dock att du har satt id till UNIQUE.

 

REPLACE fungerar precis som INSERT, men om det redan finns en post med ett specifikt värde för ett unikt idex, så ersätts den.

 

REPLACE INTO Tabell (column1, id) VALUES('$column1', '$id');

 

För en tabell skapad så här:

CREATE TABLE Tabell (

id INT NOT NULL,

column1 VARCHAR(14) NOT NULL,

PRIMARY KEY(id),

UNIQUE(id),

INDEX(id)

);

 

Link to comment
Share on other sites

Jag vill inte ersätta värdet utan uppdatera.

 

Men vad jag vill däremot är att om id inte finns i tabbellen så skall den först skapa en ny rad och sedan lägga till det nya värdet.

 

Eller tänker jag helt fel här..

Jag vill dessutom att det skall gå fort och smidigt.

 

Link to comment
Share on other sites

Då blir det nog på mitt sätt du får lösa det ändå om det nu inte finns nån annan funktion i mysql som jag inte känner till (visste inte om replace där Cariad, man lär sig alltid nånting nytt!)

 

Att köra if satser är ju inte särskilt snabbt, men det är inte så att du kommer märka nån prestandaskillnad egentligen. Problemet ligger väl i att du måste köra minst två SQL anrop istället för en. Ingen större prestandaskillnad ändå.

 

Det du gör är att skriva select anropet, sen använder du dig av mysql_num_rows funktionen för att se om du fick något resultat tillbaka, om du inte fick det så returnerar denna 0 har jag för mig.

 

På detta sätt kan du göra en ifsats som gör olika saker beroende på om svaret från mysql_num_rows är 1 eller 0.

 

http://www.php.net/manual/en/function.mysql-num-rows.php

 

--

Some say I am crazy.. but the Voices in my head disagree...

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...