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

Problema com actualização de Tabela no MySQL

Discussão em 'Web Development' iniciada por kronozord, 13 de Julho de 2012. (Respostas: 6; Visualizações: 498)

  1. kronozord

    kronozord Power Member

    Recebo regularmente um ficheiro CSV com uma lista de funcionario de uma dada empresa.
    Tenho que fazer parsing do ficheiro, inserir os novos funcionarios, e actualizar os dados antigos.
    Quando insiro pela primeira vez os funcionarios na tabela corre tudo muito bem, mas quando tenho de actualizar as coisa já nao funcionam direito. Por isso experimentei as 3 querys seguintes:

    INSERT INTO funcionarios (nif,nome,zona) VALUES (?,?,?) ON DUPLICATE KEY UPDATE zona=?
    INSERT INTO funcionarios (nif,nome,zona) VALUES (?,?,?) ON DUPLICATE KEY UPDATE zona=VALUES(zona)
    REPLACE INTO funcionarios (nif,nome,zona) VALUES (?,?,?)

    O nif serve de chave primaria, por isso o ON DUPLICATE KEY deveria resultar mas não funciona, apenas a ultima query.
    O problema é que eu não quero usar o REPLACE porque este apaga o row antigo, e também não quero fazer querys para testar se o row com o nif=xxxxx já existe de depois fazer UPDATE.
    Alguem me explica porque é que não funciona?


    P.S. Estou a usar prepared statements em PHP com o XAMPP 1.7.7
     
    Última edição: 13 de Julho de 2012
  2. nfk

    nfk Power Member

    Se fizeres diretamente em SQL, com valores arbitrários, funciona?
     
  3. kronozord

    kronozord Power Member

    Sim testei o ON DUPLICATE KEY directamente no phpMyAdmin
     
  4. nfk

    nfk Power Member

    E o que queres dizer com "não funciona"? Dá um erro ou simplesmente não acontece nada?
     
  5. kronozord

    kronozord Power Member

    Nao ocorre erro algum, o script corre impecavel, e é isso que eu acho estranho.
    Não da erros mas tambem não actualiza.
     
  6. nfk

    nfk Power Member

    Assim é difícil perceber o problema. Eu não percebo nada de PHP, mas podes pôr aqui o código para ver se alguém te pode ajudar.

    Se ainda não tiveres visto, pode ser que encontres alguma pista nos logs do myqsl e do apache.
     
  7. kronozord

    kronozord Power Member

    Peço desculpa foi azelhice minha. Estava a invocar a query errada! :facepalm:
     

Partilhar esta Página