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

    Valori auto-increment di MySQL. Come controllarli da PHP?

    Ciao ragazzi, scusate se il titolo non rende bene.

    Allora, spiego subito cosa mi serve...

    Ho creato una tabella MySQL con un valore AUTO INCREMENT che quindi ad ogni nuovo record ne aumenta automaticamente il valore di una unità.
    Il problema è che se elimino un record e poi ne scrivo uno nuovo non viene più aumentato di 1 sola unità ma di ben 2 unità!

    Mi spiego meglio.
    Ho una tabella con un campo chiamato "ID" con auto-increment attivo.
    Ho un record con ID=1.
    Cancello questo record.
    Scrivo un nuovo record, il nuovo record ha ID=2 e non ID=1.

    Come faccio a fare in modo che ID aumenti sempre di una sola unità?
    Esiste forse qualche funzione PHP?

    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    non è che aumenta di due unità

    esempi.

    creo 3 record che avranno i seguenti ID
    1
    2
    3

    esempio 1:
    cancello il record 2 e creo un nuovo record

    1
    3
    4

    esempio 2:
    cancello il record 3 e creo un nuovo record
    1
    2
    4

    esempio 3:
    cancello i record 2 e 3 e creo un nuovo record
    1
    4

    mysql tiene in memoria qual'è l'ultimo id che ha assegnato in una tabella e riprende da lì anche se cancelli il record.

    questo comportamento varia in base al tipo della tabella comunque
    alcune dopo un riavvio del server ricalcolano l'ultimo indice assegnato e ripartono da lì

  3. #3
    Si ok, lo so che non aumenta sempre di 2 unità... ma mica potevo riportare tutti gli esempi come hai appena fatto

    Da Php si può controllare questa cosa?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    nope
    comunque perchè ti crea problemi? è raro, molto raro, terminare gli ID in un database (quasi impossibile)

  5. #5
    Si chiama AUTO_increment proprio perche' e' automatico, se ti serve controllarlo manualmente usa un indice... manuale

  6. #6
    Originariamente inviato da nickcv
    nope
    comunque perchè ti crea problemi? è raro, molto raro, terminare gli ID in un database (quasi impossibile)
    Non è questa la mia preoccupazione, a me serve ad un altro scopo

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    se ci spieghi a cosa ti serve può che essere che ti troviamo una soluzione alternativa...

  8. #8
    Originariamente inviato da nickcv
    se ci spieghi a cosa ti serve può che essere che ti troviamo una soluzione alternativa...
    La spiegazione è molto lunga, una soluzione alternativa ce l'ho ma devo usare una query in più e siccome so già per esperienza che meno query si usano meglio è per il server allora volevo sapere se c'era un modo per fare la cosa diciamo "automaticamente"...

  9. #9
    Se vuoi soluzioni alternative ci devi spiegare bene le esigenze che hai, palle di vetro qui scarseggiano

  10. #10
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da marcsellier
    ... siccome so già per esperienza che meno query si usano meglio è per il server ...

    Fatal error: no valid declaration in php.html.it/forum on postid 13108306

    e che lo tieni a fare un database scusa?

    Codice PHP:
        function updateIncrement(){
            
    $check=mysql_query("select   count(id) as totali,
                                        id,
                                        incremental
                               from     tabella
                               where    incremenal =''"
    );
            
    $c=1;
            
    $n=0;
            while(
    $res=mysql_fetch_assoc($check)){
                if(
    $res['incremental'] != $c){
                    
    mysql_query("update tabella set incremental=$c where id={$res['id']}");
                    
    $n++;
                    }
                
    $c++;
                }
            return 
    $n //quanti modificati
            

    questa potrebbe essere una soluzione
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.