Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 38
  1. #1

    [MYSQL] estrapolare ultimo valore auto_increment inserito

    Buongiorno,ci stò provando da ieri sera provando ad usare comandi come MAX e LAST_INSERT_ID, poi ho provato anche con mysql_insert_id ma non riesco in nessun modo a trovare l'ultimo valore auto_increment inserito in seguito al seguente codice:

    codice:
    <?php
    $host = 'localhost';
    $username = 'root';
    $password = '';
    $db = 'clienti';
    $conn = mysql_connect($host,$username,$password) or die (mysql_error());
    $sel = mysql_select_db($db) or die (mysql_error());
    
    
    
    $ID_CLIENTE = $_POST['ID_CLIENTE'];  
    $TIPOLOGIA = $_POST['TIPOLOGIA']; 
    $FATTURATO_A = $_POST['FATTURATO_A']; 
    
                   echo "
                    <br>
                    <br>
                    <br>
                    <br>
                    ";
    
    
    $toinsert = "INSERT INTO clienti.commessa (ID_CLIENTE, TIPOLOGIA, FATTURATO_A) VALUES ('$ID_CLIENTE', '$TIPOLOGIA', '$FATTURATO_A')";
    
    $result = mysql_query($toinsert);
    if($result){
        echo("<br>Inserimento commessa avvenuto correttamente");
    } else{
        echo("<br>Inserimento commessa non eseguito");
    }; ?>
    Gentilmente potete dirmi cosa devo fare? Vi ringrazio.

  2. #2
    Mi son dimenticato di scrivere che il valore auto_increment di chiama ID_COMMESSA e logicamente va a +1 ogni volta che la query $toinsert viene eseguita

  3. #3

  4. #4
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    Secondo i sacri testi è sbagliato dal punto di vista logico utilizzare una chiave autoincrementante

  5. #5
    ti ringrazio ma eseguendo
    codice:
    SELECT LAST_INSERT_ID(ID_COMMESSA) FROM  clienti.commessa
    in PhpMyAdmin mi dà come risultato tutti gli ID_COMMESSA già inseriti nella tabella mentra inserendolo nella pagina con il seguente codice
    codice:
    $sql = "SELECT LAST_INSERT_ID(ID_COMMESSA) FROM  clienti.commessa";
        $result=  mysql_query($sql);
    mi stampa come risultato l'error Resource id #6

  6. #6
    in che senso non dovrei usare una chiave autoincrementante? ma se la chiave deve essere univoca penso sia il metodo migliore mettere un auto_increment cosi da esser sicuri di non averla doppia...o sbaglio?

  7. #7
    Quote Originariamente inviata da brancomat Visualizza il messaggio
    Secondo i sacri testi è sbagliato dal punto di vista logico utilizzare una chiave autoincrementante
    spiegala

  8. #8
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    Quote Originariamente inviata da Nick_00000 Visualizza il messaggio
    ti ringrazio ma eseguendo
    codice:
    SELECT LAST_INSERT_ID(ID_COMMESSA) FROM  clienti.commessa
    in PhpMyAdmin mi dà come risultato tutti gli ID_COMMESSA già inseriti nella tabella mentra inserendolo nella pagina con il seguente codice
    codice:
    $sql = "SELECT LAST_INSERT_ID(ID_COMMESSA) FROM  clienti.commessa";
        $result=  mysql_query($sql);
    mi stampa come risultato l'error Resource id #6
    Per quanto ne so, leggendo la documentazione, LAST_INSERT_ID() senza parametri mi pare la forma più affidabile, non ho capito bene cosa succede se ci metti dentro una espressione.

  9. #9
    Utente bannato
    Registrato dal
    Jul 2013
    Messaggi
    290
    Quote Originariamente inviata da Nick_00000 Visualizza il messaggio
    in che senso non dovrei usare una chiave autoincrementante? ma se la chiave deve essere univoca penso sia il metodo migliore mettere un auto_increment cosi da esser sicuri di non averla doppia...o sbaglio?
    Boh... secondo i testi di progettazione che sto lurkando una chiave primaria dovrebbe avere un suo significato logico (che so codice fiscale, numero fattura e così via). Solo nel caso in cui non si possa trovare facilmente una chiave primaria si può ripiegare su un'autoincrementante.
    I motivi che ho letto sono parecchi, pro e contro.
    Contro
    - portabilità. Non è detto che nel db X questo tipo di campi esista
    - facilità di backup e merge di dati diversi. Bisogna nel caso modificare a mano i parametri della CREATE TABLE di mysql oppure fare dei gran "casini"
    - non c'è il problema di sapere qual'è l'ultima chiave inserita (perchè lo sai già)
    - ci sono sempre le chiavi UUID nel caso proprio non si sappia come cavarsela.
    che però sono in generale più lente, a meno che non si riorganizzino i campi che la compongono.
    o banalmente la si casti in un BIGINT
    - chiavi "scatterate" generano indici "scatterati", mentre quelle autoincrementanti non lo fanno

    Pro
    - generalmente molto veloce, soprattutto in confronto con chiavi primarie in formato di testo e dischi magnetici lenti

    Conclusioni
    - se hai milioni di record allora autoincrementante è l'ideale per ragioni di velocità; se ne hai qualche migliaia la flessibilità di una chiave "vera" è spesso da preferire

  10. #10
    conclusioni sacrosante - come al solito "dipende". resta da capire cosa c'entra questa cosa con l'argomento del post (recuperare l'identity dell'ultimo record inserito)

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.