Ciao, ho un semplice record con un id primary key auto increment e tanti campi che possono anche avere valori NULL.
Il record contiene gli indirizzi da scrivere sulle buste da inviare via posta.
La simpatica pagina che ho creato, simula una busta da lettera, in cui si inseriscono i dati e poi premendo invio si stampa la busta ( in tre formati! ). Bene!
Quando si preme il tasto INVIA in realtà si inserisce anche l'indirizzo nel database, così quando la prossima volta si deve inviare di nuovo allo stesso indirizzo non bisogna scriverlo da capo, ma con la funzione autocomplete() si richiama quell'indirizzo dal database. Bene!

In fatti fino a qui bene, il problema nasce però quando si invia l'indirizzo, dato che esso può essere preesistente, la funzione MySQL INSERT INTO è corredata da un bel ON DUPLICATE KEY UPDATE, per evitare duplicati, ma eventualmente anzi permettere modifiche ad un record scritto male.
Ma niente!
Ogni record viene sempre iscritto come fosse nuovo, e non va affatto bene.
La query è la seguente:
codice:
INSERT INTO indirizzario 
( protocollo, titolo, intestazione, via, civico, citta, cap, provincia, sigla_nazionale, nazione ) 
VALUES ( :prot, :titolo, :intes, :via, :civico, :citta, :cap, :prov, :sigla, :naz ) 
ON DUPLICATE KEY UPDATE ID_indirizzi = LAST_INSERT_ID( ID_indirizzi ), 
protocollo = protocollo, titolo = titolo, intestazione = intestazione, via = via, civico = civico, citta = citta, cap = cap, provincia = provincia, sigla_nazionale = sigla_nazionale, nazione = nazione; --
Come si dovrebbe capire dai segna posto, sto usando le funzioni PDO per trasmettere i dati al server MySQL, ma a parte ciò la query funziona, almeno fino all'inserimento dei valori, poi nulla.
Ho provato anche a modificarla in un altro modo:
codice:
INSERT INTO indirizzario 
( ID_indirizzi, protocollo, titolo, intestazione, via, civico, citta, cap, provincia, sigla_nazionale, nazione ) 
VALUES ( LAST_INSERT_ID( ID_indirizzi ), :prot, :titolo, :intes, :via, :civico, :citta, :cap, :prov, :sigla, :naz ) 
ON DUPLICATE KEY UPDATE  
protocollo = protocollo, titolo = titolo, intestazione = intestazione,  via = via, civico = civico, citta = citta, cap = cap, provincia =  provincia, sigla_nazionale = sigla_nazionale, nazione = nazione; --
Ma niente, non funziona.
Come scrivevo prima, l'unico campo con un primary key è l'ID_indirizzi, per il resto nessun campo è a unique.

Come la risolvo?