Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[PHP/MYSQL] domanda su transazioni

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[PHP/MYSQL] domanda su transazioni

Postdi Swalke » 10/06/08 22:10

Ciao a tutti.
Faccio prima a descrivervi la mia donada con un esempio.

Supponete che io abbia due tabelle:

Codice: Seleziona tutto
TABELLA1 con i campi
- id (autoincrement)
- nome


Codice: Seleziona tutto
TABELLA2
- id_tabella1
- altro


legate da una relazione sui campi id--->id_tabella1

Quello che devo fare io in php (usando mysql) è una insert nella TABELLA1 seguito dal recuperare l'id dell'elemento inserito (tramite una SELECTsuppongo) per inserirlo nella TABELLA2

Come posso fare senza incorrere in problemi di concorrenza?
Basta inglobare la insert sulla TABELLA1, la SELECT sullaTABELLA1 e la INSERT sulla TABELLA 2 in una transazione?

Grazie mille per l'aiuto.
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano

Sponsor
 

Postdi archimede » 11/06/08 08:23

mysql_insert_id.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP/MYSQL] domanda su transazioni

Postdi Swalke » 11/06/08 12:42

Grazie per l'aiuto, ho visto che nel mio caso dovrei usare
mysqli_insert_id: http://www.phpbuilder.com/manual/en/fun ... ert-id.php

Però non capisco una cosa dalla documentazione.
Se un secondo utente esegue una insert dopo la mia, prima che io esegua mysqli_insert_id, quale valore mi viene ritornato?
L'id della insert che viene fatto dal secondo utente o l'id della mia insert?
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano

Re: [PHP/MYSQL] domanda su transazioni

Postdi archimede » 11/06/08 13:32

Swalke ha scritto:Se un secondo utente esegue una insert dopo la mia, prima che io esegua mysqli_insert_id, quale valore mi viene ritornato?
Non credo di capire la domanda... Io non sono un esperto di PHP nè di MySql ma, anche guardando gli esempi da te linkati, direi che ogni INSERT sarà associata a un ID differente. Non vedo possibilità di sovrapposizione francamente (il codice è eseguito sul server, non sul client).

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: [PHP/MYSQL] domanda su transazioni

Postdi Swalke » 11/06/08 16:45

Anche io non sono un esperto di PHP... ...anzi ho appena iniziato.

Quello che mi sembra ambiguo nella documentazione è questa frase:

mysqli->insert_id -- Returns the auto generated id used in the last query


Dunque supponi che due utenti facciano partire la insert e che il flusso di controllo lato server sulle request concorrenti sia il seguente (tipico problema di concorrenza):

Insert --> da utente1
Insert --> da utente2
mysqli_insert_id --> da utente1
mysqli_insert_id --> da utente2

A questo punto vorrei capire se
mysqli_insert_id --> da utente1
ritorna l'id della insert effettuata da utente 1 o da utente 2
Infatti "the last query" (da documentazione) è quella dell'utente 2.

Spero di essere riuscito a spiegarmi :-?
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano

Re: [PHP/MYSQL] domanda su transazioni

Postdi Triumph Of Steel » 11/06/08 20:36

Swalke ha scritto:[...]
A questo punto vorrei capire se
mysqli_insert_id --> da utente1
ritorna l'id della insert effettuata da utente 1 o da utente 2
Infatti "the last query" (da documentazione) è quella dell'utente 2.

Spero di essere riuscito a spiegarmi :-?


ogni utente dovrebbe eseguira una connessione per se stesso, quindi non dovrebbero esserci sovrapposizioni di query.
Non credo esista una unica connessoine per tutti gli utenti. Ogni utente esegue la propria connessione per navigare su un sito. Di conseguenza il suo LASTID è associato alla SUA ultima query della SUA connessione.

credo... :D

io l'hoo usata spesso quella funzione e non ho mai avuto problemi.

[edit]
dimenticavo... infatti solitamente va usata in questo modo
ad esempio:
Codice: Seleziona tutto
$conn = mysql_connect(....);
$qry = "insert into....";
mysql_qurey($qry,$conn);
$lastID = mysql_insert_id($conn);

in questo modo non hai problemi
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Re: [PHP/MYSQL] domanda su transazioni

Postdi Swalke » 17/06/08 22:00

Grazie mille per l'aiuto!
;)
Avatar utente
Swalke
Hardware Admin
 
Post: 820
Iscritto il: 26/10/01 01:00
Località: Milano


Torna a Programmazione


Topic correlati a "[PHP/MYSQL] domanda su transazioni":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti