Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192

    Aggiornamento di una lista nel db

    Ho una perplessità.
    Devo aggiornare (ogni 2-3 secondi tramite ajax) una lista

    Qui sorge il dubbio:

    A) Cancellare l'intera riga dal db e inserirne una nuova

    Codice PHP:
    mysql_query("DELETE FROM c WHERE id = '$id'");
    mysql_query("INSERT into c (id,lista) VALUES ('$id','$lista')"); 
    B) Controllare se la riga esiste già e di conseguenza aggiungere una nuova riga o sovrascrivere il valore

    Codice PHP:
    $query mysql_query("SELECT * FROM c WHERE id = '$id'");
    if(
    mysql_num_rows($query) == 1)
       
    mysql_query("UPDATE c SET lista = '$lista' WHERE id = '$id'");
    else
       
    mysql_query("INSERT into c (id,lista) VALUES ('$id','$lista')"); 
    Quale delle due richiede meno risorse?

  2. #2
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    E' brutto cambiare gli id di elementi in db in continuazione, perché se ci sono altre tabelle o ci saranno altre tabelle che fanno riferimeno a quegli id dovrai modificare anche quelle.

    Io opto sempre per B.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    l'id che si auto incrementa in questo caso è assente, c'è un id di identificazione ma è l'id dell'utente attualmente connesso, quindi rimane costante.

  4. #4
    allora se dici che devi aggiornare ogni 2-3 sec vuol dire che nel 99% dei casi aggiorni e raramente devi inserire nuovi utenti...


    quindi tu parti tranquillo facendo update e solo nel caso non ci sia nulla aggiornare inserisci

    Codice PHP:
    mysql_query("UPDATE c SET lista = '$lista' WHERE id = '$id'"); 

    if (
    mysql_affected_rows() == 0)
       
    mysql_query("INSERT into c (id,lista) VALUES ('$id','$lista')"); 

  5. #5
    Utente di HTML.it L'avatar di Ranma2
    Registrato dal
    Mar 2003
    Messaggi
    2,648
    Il metodo più elengante, a parer mio, è:

    http://dev.mysql.com/doc/refman/5.0/...duplicate.html

    Ma devi settare una chiave come primaria o unica.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2011
    Messaggi
    192
    grazie

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.