PHP MySQL INSERT fallisce a causa di vincolo univoco
-
02-10-2019 - |
Domanda
Il inserto Sto Facendo l'mysql_errno vincolo univoco () 1062.
Questo funziona bene, ma vorrei trovare la riga esistente a ripristinare o modificarlo.
È che ci sono metodo per ottenere la riga id su inserto falliscono? Ho provato mysql_insert_id (), ma sono reso conto che sarebbe tornato solo la riga che sto inserendo (o Impossibile inserire), pertanto, ottengo 0.
C'è altra scelta se non di emettere un'altra mysql_query e semplicemente eseguire una selezione sul valore duplicato?
Voglio solo per assicurarsi che non v'è una migliore, più rapido, modo più economico per farlo.
Soluzione
Se si sta tentando di inserire una riga se nuovo o aggiornare i valori esistente quindi REPLACE INTO è quello che serve. Considera anche INSERT ... ON DUPLICATE KEY UPDATE Sintassi se ci sono vincoli coinvolti come sostituire nelle CANCELLA e quindi inserire.
Altri suggerimenti
Dovreste controllare la tabella per le chiavi "unici" (SHOW CREATE TABLE
sarà elencarli tutti), e poi interrogare la tabella per i valori associati nella query di inserimento che avevi tentato. Quindi, se siete inserimento di campi A, B, C, D e B, C hanno la chiave univoca su di loro, poi:
SELECT id, B, C FROM table WHERE B=$B and C=$C;