Visualizzazione risultati 1 fino 8 di 8

Discussione: [Mysql] Inserire un nuovo record in tabella.. Ma se gia c'è?...

  1. #1
    Guest

    Predefinito [Mysql] Inserire un nuovo record in tabella.. Ma se gia c'è?...

    Salve a tutti...

    Ho una tabella in cui vi sono 31 record, cioè tutti i giorni di un mese..

    Ogni giorni effettuo una query con la quale assegno, per il giorno precedente, il numero delle persone che si sono connesse al mio sito.

    Attualmente inserisco nella tabella con una INSERT INTO .

    Con insert into però il numero dei record in tabella aumenta di uno sempre..

    Esiste invece una istruzione mysql che inserisce il nuovo record se manca, mentre se c'è fa in automatico UPDATE ? In questo modo i record in tabella resterebbero sempre 31..

  2. #2
    Guest

    Predefinito

    Puoi controllare se il dato esiste con un semplice if.
    Magari posta le query in questione così ti aiutiamo.

  3. #3
    Guest

    Predefinito

    Rendi quel campo di tipo UNIQUE e usa:
    INSERT IGNORE INTO ....


    Ciaooo!!!!

  4. #4
    Guest

    Predefinito

    Proverò grazie :)

  5. #5
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Ecco come puoi fare:

    REPLACE INTO Tabella (Campo1, Campo2, ...)
    VALUES (Valore1, Valore2, ...)

    Questa query realizza esattamente quello che chiedi: se non viene violato il vincolo di chiave, allora il record sarà inserito, in caso contrario, verrà rimpiazzato.

    Inutile dire che si tratta di un'istruzione molto potente ma anche molto pericolosa...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da debug
    Rendi quel campo di tipo UNIQUE e usa:
    INSERT IGNORE INTO ....
    Mi ero finalmente deciso ad implementare questa soluzione, così ho impostato nella tabella "connessioni_mese" il campo UNIQUE in "giorno" ed ho fatto:

    Codice:
    $query_string = "INSERT IGNORE INTO $tabella_connessioni_mese (mese, giorno, connessioni, connessioni_non_spider) VALUES ('$mese_ieri', '$giorno_ieri','$user_giorno_prima', '$user_giorno_prima_no_spider')";
     $insert_stat = mysql_query($query_string);
    Ma.. non capisco.. non succede nulla.. La tabella non viene modificata.. Il record, che già c'era, non viene sovrascritto.. e mysql_error() non restituisce alcun errore... è una query "fantasma".. come mai?

    Se tolgo l'IGNORE e lascio "INSERT INTO" invece il mysql_error() mi da un errore tipo "duplicate entry"...

    Qualche suggerimento?

    [EDIT] Credo di avere risolto usando il comando mysql REPLACE
    Ultima modifica di attorianzo : 13-06-2007 alle ore 21.11.13

  7. #7
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da attorianzo
    ...
    [EDIT] Credo di avere risolto usando il comando mysql REPLACE
    Però, ci sono voluti 9 mesi, ma alla fine è bastato il mio post sopra per farti partorire :-D :-D

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  8. #8
    Guest

    Predefinito

    eheh hai proprio ragione demential :) . Grazie..
    Ultima modifica di attorianzo : 14-06-2007 alle ore 11.10.01

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •