1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[HELPme] UPDATE se já existir... em mySQL

Discussão em 'Web Development' iniciada por STronic, 27 de Junho de 2008. (Respostas: 8; Visualizações: 1146)

  1. STronic

    STronic Power Member

    Boas ;)

    preciso de uma ajudinha....

    Estou a tentar criar uma forma de converter tabelas DBF para mySQL, a integração tudo bem.. já está feita...

    o meu problema está nas alterações... ou seja...

    quando tenho uma linha nova no DBF ele insere correctamente...
    como fazer se uma linha for alterada para que ele altere também no SQL ?

    o SQL servirá apenas de Consulta sendo os dados importados de ficheiros DBF ;)


    uma das tabelas é:

    PHP:
    CREATE TABLE `funcionarios` (
      `
    cartaoint(14) default NULL,
      `
    numeroint(4NOT NULL default '0',
      `
    nomevarchar(50) default NULL,
      `
    categoriavarchar(20) default NULL,
      `
    seccaovarchar(20) default NULL,
      `
    cacifovarchar(5) default NULL,
      `
    lojavarchar(10) default NULL,
      `
    admissaodate default NULL,
      `
    msgvarchar(40) default NULL,
      `
    nascimentodate default NULL,
      `
    pontovarchar(1) default NULL,
      
    PRIMARY KEY  (`numero`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1;
    em que para inserir tenho:

    PHP:
    $sql mysql_query("INSERT IGNORE INTO funcionarios(cartao, numero, nome, categoria, seccao, cacifo, loja, admissao, msg, nascimento, ponto) VALUES('$cartao','$numero','$nome','$categoria','$seccao','$cacifo','$loja','$admissao','$msg','$nascimento','$ponto')") or die('Erro no SQL: ' mysql_error());
    o que preciso de fazer para que este comando altere os valores para uma linha já existente mas com valores alterados? sem duplicar linhas

    thanks ;)
     
  2. STronic

    STronic Power Member

    pois.. por aí ja eu tentei... mas nao consegui...

    será que me consegues por um exemplo para eu tentar perceber ;)


    EDIT: ou me faz o UPDATE ou me faz o INSERT...

    penso que poderia haver uma solução que contemple os 2... sem ter que fazer os dois comandos.. :S
     
    Última edição: 27 de Junho de 2008
  3. Armadillo

    Armadillo Folding Member

    Pegando no exemplo:

    Código:
    UPDATE Person
    SET Address = 'Stien 12', City = 'Stavanger'
    WHERE LastName = 'Rasmussen'
    TRaduzindo fica
    Código:
    Actualizar Pessoa
    Definir Endereço = 'Stien 12', Cidade = 'Stavanger'
    Onde UltimoNome =  'Rasmussen'
    
    ...ou seja, Para actualizares uma tabela, primeiro tens que definir qual a tabela em questao (PERSON), de seguida defines os novos valores (
    SET Address = 'Stien 12', City = 'Stavanger') e quando é que estes valores devem ser actualizados (WHERE LastName = 'Rasmussen')

    se nao tiveres percebido, ja sabes->reply

    edit: vais ter sempre que contemplar o Insert e o Update, penso eu de que...
     
    Última edição: 27 de Junho de 2008
  4. STronic

    STronic Power Member

    até aí eu percebi ;)

    mas...
    terei de usar o INSERT para novas linhas no DBF e o UPDATE para actualizar as existentes?

    ou
    existe algum comando que contemple as 2 opções?

    obg pela ajuda ;)
     
  5. Armadillo

    Armadillo Folding Member

    Última edição: 27 de Junho de 2008
  6. Armadillo

    Armadillo Folding Member

    já agora fica aqui o SQL
    Código:
    INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
        [INTO] [I]tbl_name[/I] [([I]col_name[/I],...)]
        {VALUES | VALUE} ({[I]expr[/I] | DEFAULT},...),(...),...
        [ ON DUPLICATE KEY UPDATE
          [I]col_name[/I]=[I]expr[/I]
            [, [I]col_name[/I]=[I]expr[/I]] ... ]
    
     
  7. STronic

    STronic Power Member

    thanks... ja tinha tropeçado nisso... mas tb nao consegui...

    mas dar mais umas voltas :P as ver se consigo ;)
     
  8. STronic

    STronic Power Member

    tentei com isto:

    Código:
    INSERT INTO table (a,b,c,d,e) VALUES (1,2,3,4,5) ON DUPLICATE KEY UPDATE VALUES(b,c,d,e);
    mas tb nao deu....

    Código:
    Erro no SQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES('*','*','********* ','********' at line 1
     

Partilhar esta Página