[PHP] Recupero id autoincrement

bubino8

Utente Attivo
28 Apr 2017
318
18
18
27
BZ
Buonasera,

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


Grazie
 

zorro

Utente Attivo
20 Ott 2014
218
10
18
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
 

bubino8

Utente Attivo
28 Apr 2017
318
18
18
27
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
 

bubino8

Utente Attivo
28 Apr 2017
318
18
18
27
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
diventerebbe nuovamente 34.
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.
 

marino51

Utente Attivo
28 Feb 2013
2.599
132
63
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 ...
 

bubino8

Utente Attivo
28 Apr 2017
318
18
18
27
BZ
Grazie mille per la risposta sei stato chiarissimo.

Ora che mi hai fatto notare
chi conferma per primo e chi si prende il primo "autoincrement"
ho optato per farlo non sull'id ma su un codice casuale generato che ovviamente anchesso sarà univoco.


Grazie ancora per la disponibilità
 

zorro

Utente Attivo
20 Ott 2014
218
10
18
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
 

bubino8

Utente Attivo
28 Apr 2017
318
18
18
27
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
o recuperare l'ID appena immesso e inseritrlo poi nella URL
e con query UPDATE vado ad aggiungere l'ID.

Poi ho optato per la seconda
utilizzare un campo univoco interamente gestito da te.
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