uso di mysql_insert_id

Salve, che succede se due utenti si registrano in quel momento ed io usando questa piccola parte di codice:

mysql_query(user)

$user_id = mysql_insert_id();

mysql_query(profili) + user_id.

e invio l'inserimento a due tabelle? una user e una profili_user.

Che succede?

Mi dite come posso procedere e verificare o fare il test?

Prima chiedo cosa si può succedere se faccio cosi?

grazie mille.

inviato 5 anni fa
luigi
X 0 X

Se la chiave è primaria riceverai un errore per l'inserimento di uno dei due (mysql non esegue due query nello stesso identico istante ma gestisce le richieste sequenzialmente).

Se la chiave non è primaria ti ritroverai due utenti col medesimo id.

Ti consiglio di usare le transazioni, che ti permettono di stabilire un lock e di rilasciarlo ad operazione conclusa, in questo modo ti eviti i problemi sopra elencati.

Le transazioni funzionano solo su tabelle di tipo InnoDB, per cui assicurati di avere a disposizione questo engine di memorizzazione su mysql, ma soprattutto assicurati di disporre della versione più aggiornata disponibile del DBMS visto che di recente la Sun ha operato al fine di ottimizzare le InnoDB

risposto 5 anni fa
s.rotondo
X 0 X

ciao, appena posso mi metto di nuovo sul codice.

Però mi è venuta in mente un'altra cosa di usare una stringa md5 che identifica l'user e l'user_id della tabella profili. Come fosse una chiave dell'utente.

Cosi si può evitare l'id automatico.

Penso cosi.

Poi quando ho tempo provo.

ciao.

risposto 5 anni fa
luigi
X 0 X

Buona soluzione anche questa, puoi concatenare il timestamp, lo username e la mail dell'utente, generando poi l'hash con questi dati, così sei sicuro che ogni utente ne ha uno univoco.

risposto 5 anni fa
s.rotondo
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda