• User Newbie

    Problema con upload e inserimento nel db, aiuto.

    Salve a tutti, scusate il titotlo, poco rappresentativo del problema. Vi spiego velocemente la situazione.
    Ho un db con un campo id AUTO_INCREMENT, una serie di campi testo e un campo testo(che serve per memorizzare l'indirizzo di un'immagine che "uploado" sul server").
    La funzione di upload funziona. Ora viene il bello con l'inserimento nel db dei dati. La mia intenzione era questa:

    1. Chimare la funzione inserimento, che inserisce tutto tranne l'indirizzo.
    2. Tramite mysql_insert_id() becco l'ultimo id inserito che passo alla funzione upload per permettermi di creare nella cartella upload una sottocartella id e fare l'upload dell'immagine.

    Problema: Se due utenti fanno nello stesso momento l'operazione di insert nel db puo' capitare che chi ha fatto la prima l'insert se la sua query impiega di piu' si becca poi id della insert che ha fatto l'utente dopo la cui query di insert ha impiegato meno giusto? Ciò ovviamente non deve accadere. Come posso fare?

    Soluzioni: Ecco cosa ho pensato.

    1. Lock sulla tabella.
    2. Siccome i restanti campi testo non sono univoci e quindi potrei avere per uno stesso campo diversi id mi attacco al tram e penso ad una nuova implementazione del tutto. Tipo: chiamo la funzione upload che dopo aver fatto l'upload mi resituisce lei una stringa con l'url dell'immagine appena uploadata. (es. char-random.estensione). Chiamo quindi la insert.

    Voi che dite?


  • User Newbie

    Mi rispondo da solo.

    Se due utenti fanno nello stesso momento l'operazione di insert nel db puo' capitare che chi ha fatto la prima l'insert se la sua query impiega di piu' si becca poi id della insert che ha fatto l'utente dopo la cui query di insert ha impiegato meno giusto? Ciò ovviamente non deve accadere. Come posso fare?

    Semplice perchè mysql_insert_id() resituisce l'ultimo id della stessa connessione. Se ci sono piu' utenti la connessione è diversa 🙂

    Pareri sono cmq accetti 🙂