Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [mysql] insert_id... e se nel mezzo mi fa un altro insert?

    Ciao a tutti mi è venuto un dubbio...

    spesso mi capita di dover fare un insert, recuperarmi il valore dell'id del record inserito
    e successivamente (dopo poche righe) fare un update di quel record.

    solitamente uso $mysqli->insert_id

    ES:
    codice:
    $query_ins = "INSERT INTO `tbl_emailinviate`(`tbl_utenti_idtbl_utenti`, `to`, `bcc`,`oggetto`, `messaggio`, `data`, `inviata`) ";
    $query_ins .= "VALUES (1,'".$to."','".$bcc."','".$oggetto."','".$messaggio."','".date("y-m-d")."', ".$stato.")";
    $this->my_mysqli_query($query_ins);
    
    $id_emailinviate=$mysqli->insert_id;
    DOMANDA:

    ma se mentre sta eseguendo quelle istruzioni, venisse eseguita un'altra insert su db? (cosa non impossibile su un sito complesso, in cui accedono migliaia di utenti che generano migliaia di insert)

    quale id mi verrebbe restituito da $mysqli->insert_id; quello corretto? o no?

    mi vengono in mente delle variabili.. @@.... ma forse son cose di SqlServer.. non ricordo..

    Mi sapete togliere il dubbio, se come sto facendo va bene o se per sicurezza dovrei fare diversamente?

    FARE il lock della tabella direi che non si può fare... perchè genererei errori per tutti gli altri...

  2. #2
    Utente di HTML.it L'avatar di marco_c
    Registrato dal
    Jun 2004
    Messaggi
    1,047
    insert_id restituisce l'ultimo id generato dalla stessa connessione mysql... quindi, se tra la generazione dell'id e la sua lettura mantieni aperta la connessione al db, sei sicuro che sei tu.
    Gli uomini si dividono in due categorie: i geni e quelli che dicono di esserlo. Io sono un genio.

  3. #3
    grazie mille per la spiegazione

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.