[PHP] Recupero id autoincrement

Discussione in 'PHP' iniziata da bubino8, 10 Luglio 2018.

  1. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    317
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Buonasera,

    Avrei bisogno di recuperare tramite una query il prossimo id autoincrement prima ancora di eseguire la query. Esiste un modo?


    Grazie
     
  2. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    198
    Mi Piace Ricevuti:
    9
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    Ciao Bubino,
    se non ho capito male, tu vorresti uno script che recuperasse, da un DB, il valore dell'ultimo ID immesso (e quindi il valore del successivo). Giusto?

    Zorro
     
  3. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    317
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    ciao
    si è proprio così ma l'ultimo id effettivo.

    Es.: Se recupero l'ultimo id che è 34 incremento e il successivo sarà 35.

    Ma se dovessi cancellare il record con id 34 l'id precedente sarebbe 33 quindi alla query seguente l'id successivo diventerebbe nuovamente 34.

    Non so se mi sono spiegato:D
     
  4. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.267
    Mi Piace Ricevuti:
    112
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
  5. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    317
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Ciao grazie per le risposte intanto.

    Allora ID autoincrement non lo metto io, il discorso che con la SELECT MAX(ID) del tuo esempio non vado a recuperare l'ID effettivo ma quello dell'ultimo record.
    Quindi se cancello l'ultimo record quindi ID 34 con MAX(ID) recupererò quello precedente quindi 33.


    mi sono spiegato male
    l'id ovviamente si incrementa ma ho bisogno di averlo prima per poterlo mettere in una campo.

    in sostanza devo creare in un campo un URL di questo tipo:
    http://192.168.1.108/qrcdr/contatore.php?url=sito&id=(numero ID autoincrement)

    Non so in che altro modo spiegarmi scusate hehe.
     
  6. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.267
    Mi Piace Ricevuti:
    112
    Punteggio:
    63
    Occupazione:
    free lance
    Località:
    Lombardia
    premesso che la tua spiegazione é molto chiara, provo a riepilogare la mia, integrandola

    autoincrement è per definizione automatico,
    ma nessuno vieta di gestirlo manualmente definendo il campo come un intero e poi usando la "insert…. select … 1+max(id) from ….",
    se gestito manualmente ciò che vorresti ottenere é di facile soluzione

    ma dovrebbe essere di facile soluzione anche con la versione automatica, nella discussione che ti ho indicato, trovi
    PHP:
    $db = new mysqli('localhost''user''pass''database');
    $sql "SHOW TABLE STATUS LIKE 'table'";
    $result=$db->query($sql);
    $row $result->fetch_assoc();
    echo 
    $row['Auto_increment'];
    ovvero questo codice va ad interrogare il valore che avrà il prossimo "autoincrement" per la tabella che é stata specificata

    questo lascerebbe supporre un giusto trattamento anche in caso di cancellazione dell'ultimo record inserito

    ma rimane il problema, se l'applicazione è utilizzata da più utenti contemporaneamente, non sai chi conferma per primo e chi si prende il primo "autoincrement" ….

    la soluzione che stai adottando, come parere, é "debole", mi sembra impossibile tu non possa creare l'url nel momento in cui deve essre usato, prendendo l'autoincrement" aggiornato nella seconda tabella ...
     
  7. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    317
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Grazie mille per la risposta sei stato chiarissimo.

    Ora che mi hai fatto notare
    ho optato per farlo non sull'id ma su un codice casuale generato che ovviamente anchesso sarà univoco.


    Grazie ancora per la disponibilità
     
  8. zorro

    zorro Utente Attivo

    Registrato:
    20 Ottobre 2014
    Messaggi:
    198
    Mi Piace Ricevuti:
    9
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    ROMA
    Ciao Bubino
    anch'io, come Marino, avevo qualche dubbio sulla gestione dell'ID AUTOINCREMENT: ho fatto qualche prova ma, come dice il nome, questo viene assegnato in modo automatico: se l'ultimo ID immesso risulta essere il 33 e tu lo cancelli, e quindi l'ultimo risulterebbe il 32, il nuovo ID sarebbe omunque il 34.
    A questo punto potresti (io ho adottato questa soluzione) o recuperare l'ID appena immesso e inseritrlo poi nella URL o, come dici tu, utilizzare un campo univoco interamente gestito da te.


    Zorro
     
  9. bubino8

    bubino8 Utente Attivo

    Registrato:
    28 Aprile 2017
    Messaggi:
    317
    Mi Piace Ricevuti:
    18
    Punteggio:
    18
    Sesso:
    Maschio
    Località:
    BZ
    Ciao ringrazio anche te per l'aiuto.
    Come detto mi sono espresso decisamente male, sono a conoscenza che appunto autoincrement è autonomo e funziona correttamente.
    Io dovevo recuperarlo ed inserirlo sulla stessa query. Precedentemente ho fatto
    e con query UPDATE vado ad aggiungere l'ID.

    Poi ho optato per la seconda
    siccome mi serve per gestire dei QR, in questo modo li rendo dinamici per poterli modificare in un secondo momento.


    RISOLTO
    Grazie per l'aiuto
     
Sto caricando...

Condividi questa Pagina