Just nu i M3-nätverket
Gå till innehåll

Uppdatera/lägga in värde?


menJada1

Rekommendera Poster

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.

Länk till kommentar
Dela på andra webbplatser

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

 

Länk till kommentar
Dela på andra webbplatser

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?

 

Länk till kommentar
Dela på andra webbplatser

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)

);

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

Jo men hur ser en sådan select ut, där man inte hämtar nått eller att värdet saknas. Borde det inte bli error/fel då?

 

Länk till kommentar
Dela på andra webbplatser

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

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...