Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Query MySQL: come?

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8

    Query MySQL: come?

    Ciao! Sono un niubbo di mysql ed ho un problema che non so come risolvere.

    Ho due tabelle, una Indice composta in questo modo (con * segno le primary key):

    codice:
    ID* | tipo
    ---------
    1   | tipoA
    2   | tipoA
    3   | tipoC
    4   | tipoB
    e così via. Poi, per ogni tipo (tipoA, tipoB...) ho una tabella "tipoX" che contiene le variabili relative a ogni entry della tabella indice con lo stesso ID. ID è, SOLO per la tabella indice, INT AUTO_INCREMENT.

    codice:
    tipoA
    ID* | var1
    ---------
    1   | val1
    2   | val1
    
    tipoB
    ID* | var2
    ---------
    4   | val2
    I tipi diversi non sono compatibili perché rappresentano set di dati strutturalmente diversi.

    Fare la query per prelevare i dati, dato l'ID, è molto semplice: con un select sulla tabella indice trovo il tipo relativo all'ID, e cerco poi l'ID nella tabella relativa al tipo specifico.

    Il problema però sorge nell'inserire. Dovrei infatti 1) inserire nell'indice, ottenendo l'ID generato automaticamente da auto_increment e 2) inserire i dati nella tabella relativa al tipo inserendo però anche l'ID appena generato. Il problema è che nell'1) genero l'iD, ma nel 2) ho "perso" il suo valore e non so come recuperarlo.

    Grazie a tutti!

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    mysql_insert_id()

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8
    Grazie mille, questo servirà ai miei scopi

    Poniamo però che io abbia un server molto trafficato, e quindi via php riceve due richieste di inserire in tabella prima che venga chiamato mysql_insert_id(). Ad esempio:

    1) utente A: inserisce riga in tabella
    2) utente B: inserisce riga in tabella
    3) utente A: chiama mysql_insert_id()
    -> B riceve ID dell'utente A!

    è possibile una cosa del genere?

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    teoricamente si.. dovresti vedere se riesci a fare una procedura direttamente in mysql facendo un lock sulle tabelle.

    ciao

  5. #5
    http://dev.mysql.com/doc/refman/5.0/...insert-id.html

    The value of mysql_insert_id() is affected only by statements issued within the current client connection. It is not affected by statements issued by other clients.
    si riferisce alla funzione della libreria di mysql, non di php, ma dato che l'estensione di php poggia sulla libreria di mysql le convenzioni ed i risultati sono uguali: non devi preoccuparti delle altre connessioni se lanci un insert tu riceverai l'id inserito con quell'insert ... e basta
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da daniele_dll
    http://dev.mysql.com/doc/refman/5.0/...insert-id.html



    si riferisce alla funzione della libreria di mysql, non di php, ma dato che l'estensione di php poggia sulla libreria di mysql le convenzioni ed i risultati sono uguali: non devi preoccuparti delle altre connessioni se lanci un insert tu riceverai l'id inserito con quell'insert ... e basta
    ecco, grazie dell'informazione :P

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    8
    Perfetto.. quindi il problema non sussiste. Grazie ancora!

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.