Avatar billede wizprod.com Nybegynder
11. juli 2001 - 22:08 Der er 6 kommentarer og
1 løsning

REPLACE

Hvordan er syntaxen til cmd\'em REPLACE... jeg kan ikke finde det der ligner dokumentation på den og mit script virker ikke helt efter hensigten når jeg bruger kommandoen!
Avatar billede retep Nybegynder
11. juli 2001 - 22:10 #1
Avatar billede morw Nybegynder
11. juli 2001 - 22:10 #2
7.22 REPLACE Syntax
    REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name [(col_name,...)]
        VALUES (expression,...)
or  REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name [(col_name,...)]
        SELECT ...
or  REPLACE [LOW_PRIORITY | DELAYED]
        [INTO] tbl_name
        SET col_name=expression, col_name=expression,...

REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record on a unique index, the old record is deleted before the new record is inserted. See section 7.21 INSERT Syntax.

In other words, you can\'t access the values of the old row from a REPLACE statement. In some old MySQL version it looked like you could do this, but that was a bug that has been corrected.

When one uses a REPLACE command, mysql_affected_rows() will return 2 if the new row replaced and old row. This is because in this case one row was inserted and then the duplicate was deleted.

The above makes it easy to check if REPLACE added or replaced a row.
Avatar billede retep Nybegynder
11. juli 2001 - 22:11 #3
REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record on a unique index, the old record is deleted before the new record is inserted.

Dvs. du behøver ikke bruge update, hvis der allerede er en tupel med pågældende id.
Avatar billede wizprod.com Nybegynder
11. juli 2001 - 22:16 #4
Ok, mit problem er så at jeg en række med id# 1. Denne laver jeg nu en replace på..... men enten skriver den ikke, eller også opretter den en ny række. Hvad er det liige der går galt?
Avatar billede retep Nybegynder
11. juli 2001 - 22:20 #5
Jamen hvis den allerede er der burde replace overskrive den tubel, som har det pågældende id, dvs, de andre felter du specificerer...

Personligt er jeg heller ikke meget for replace, og plejer selv at håndtere om der skal bruges insert eller update...
Avatar billede morw Nybegynder
11. juli 2001 - 22:23 #6
Prøv lige at komme med et dump af din table samt din replace
Avatar billede wizprod.com Nybegynder
11. juli 2001 - 22:31 #7
det er mere jeg har haft spurgt folk ang. specificeringen af id\'et, og alle svarer forskelligt....


mysql_query(\"REPLACE INTO TWDrettesys (\".$fields.\") VALUES (\".$values.\")\");

CREATE TABLE TWDrettesys (
  id smallint(5) unsigned NOT NULL auto_increment,
  mynavnirl text NOT NULL,
  myalder smallint(3) unsigned DEFAULT \'0\' NOT NULL,
  mymail tinytext NOT NULL,
  myicq int(10) unsigned DEFAULT \'0\' NOT NULL,
  myforbindelse text NOT NULL,
  myfavoritvaaben text NOT NULL,
  mycomputer text NOT NULL,
  myrang tinytext NOT NULL,
  mykommentar text NOT NULL,
  PRIMARY KEY (id)
);

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester