Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    problema con UPDATE/INSERT

    ciao,

    dunque ho questa tabella "servizi" composta da 3 campi:

    id_ser
    id_prod
    pagina

    id_ser: è l'id auto_increment
    id_prod: è l'id prodotti che lega questa tabella a quella dei prodotti
    pagina: è il campo che andrà a contenere l'html generato da un editor wysiwyg.

    il problema è:
    dato che l'di_prod è univoco,come faccio a dire al php ( o lo posso fare solo con sql?):

    se l'id_prod esiste già, eseguo un UPDATE, mentre se non esiste eseguo un INSERT?

    grazie mille

  2. #2
    Utente bannato
    Registrato dal
    Jul 2005
    Messaggi
    169
    fai una interrogazione..se esiste aggiorni altrimenti..

    in pratica una semplice select

  3. #3
    in pratica dovrei fare 3 query?

    SELECT * FROM servizi WHERE.....

    e poi qualcosa tipo:

    codice:
    if { id_prod esiste...UPDATE servizi SET pagina= .....
    
    }
    else{
    
    INSERT INTO servizi.....
    
    }
    mmm..non mi è molto chiara sta cosa...
    :master:

  4. #4
    La risposta che ti sei dato è giusta....fai l'interrogazione (SELECT), se ottieni un risultato allora fai l'UPDATE...altrimenti fai l'INSERT.

    ciao

  5. #5
    potresti usare REPLACE invece di insert. Se esiste il campo univoco aggiorna, altrimenti inserisce un nuovo record.

    REPLACE

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    Originariamente inviato da piero.mac
    potresti usare REPLACE invece di insert. Se esiste il campo univoco aggiorna, altrimenti inserisce un nuovo record.

    REPLACE
    scusa non ho capito: REPLACE fa in un colpo solo UPDATE o INSERT a seconda del caso?

    se si risparmierei un passaggio giusto?

    ho dato un'occhiata alla sintassi di REPLACE ma non mi è molto chiaro...

  7. #7
    Originariamente inviato da blur
    scusa non ho capito: REPLACE fa in un colpo solo UPDATE o INSERT a seconda del caso?

    se si risparmierei un passaggio giusto?

    ho dato un'occhiata alla sintassi di REPLACE ma non mi è molto chiaro...
    Praticamente si, ma tecnicamente no.

    Si basa su un campo con chiave primaria oppure unique. Se gia' esiste il valore richiesto allora cancella il vecchio record e scrive il nuovo. Altrimenti mette il nuovo come se fosse un insert.

    Come puoi sapere se ha sostituito il record oppure se ne ha inserito uno nuovo?

    Si contano le righe modificate. Se sono due e' perche' ha cancellato ed inserito, se e' una allora ha solamente inserito la riga. In pratica:
    codice:
    if(mysql_affected_rows($conn) == 2) echo "record aggiornato";
          elseif(mysql_affected_rows($conn) == 1 ) echo "record inserito";
                else echo "nessun aggiornamento effettuato";

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    piero la mia è una domanda un po banale ma casualmente in questi giorni mi servirebbe una funzione simile

    se la chiave unica viene trovata il record viene sostituito conservando l'id primaria?

    la risposta dovrebbe essere si! altrimenti non capisco l'utilità di REPLACE

    cmq domani faccio delle prove

  9. #9
    allora se ho capito bene, posso togliere la condizione if/else
    che serve per sapere se l'id univoco c'è oppure no, con la conseguente eliminazione di 2 query, lasciando solamente la query con REPLACE...dico bene?

    la sintassi mi sembra di aver capito è come quella di INSERT

    codice:
    $query = MYSQL_QUERY("REPLACE INTO servizi (id_cat, pagina)". "VALUES ( '{$_GET["id"]}', '{$_POST['FCKeditor1']}')");
    confermi?

  10. #10
    La miglior conferma la devi dare tu. Prova. se hai dati preziosi fai una copia della tabella e prova su quella.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.