kronozord
Suspenso
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
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: