Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di puja
    Registrato dal
    May 2013
    Messaggi
    46

    Problema gestione indici MySQL

    Ciao a tutti,

    mi scuso per il titolo generico ma non sapevo come spiegarmi.

    In più occasioni mi sono trovato di fronte al seguente problema:

    data una query:

    Codice PHP:

    $variabile1 
    mario;
    $variabile2 rossi;

    $query =     mysql_query("INSERT INTO `tabella nomi` (`indice` ,  `nome` , `cognome`)           VALUES  ('' , '" $variabile1 "' , '" $variabile2 "')") OR DIE(mysql_error()); 
    vorrei inserire nella tabella "calciatori" l'ID di questo calciatore appena inserito.. come faccio?

    Ah, per rendere la cosa più simpatica, nella `tabella nomi` ci sono migliaia di Mario Rossi, tutti con le stesse informazioni e con il solo indice univoco.

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    23
    Ciao, ho fatto una ricerca veloce e credo che devi usare questa select subito dopo l'insert SELECT LAST_INSERT_ID() oppure mysql_insert_id().

    F.

  3. #3
    Utente di HTML.it L'avatar di puja
    Registrato dal
    May 2013
    Messaggi
    46
    Ciao, grazie della risposta!

    Dopo il tuo spunto mi è venuto in mente di provare così:


    Codice PHP:
    SELECT         `Indice`        FROM `Tabella_Nome`          ORDER BY Indice DESC LIMIT 1 
    e mi isola l'ultimo id inserito, che mi pare una buona soluzione.

    Adesso però vorrei aggiornare la tabella calciatori con una sola query.

    Ho provato così:

    Codice PHP:
    UPDATE `calciatori`       
    SET        `indice` = 'SELECT         `Indice`        FROM `Tabella_Nome`          ORDER BY Indice DESC LIMIT 1     
        WHERE       `Id_calciatori` = '
    5'")OR DIE(mysql_error()); 
    ma non funziona.

    Purtroppo sono poco ferrato in mysql e non saprei come unirle. Adesso faccio altri tentativi!

    Grazie ancora,

    Ciao
    Ultima modifica di puja; 24-10-2013 a 09:29

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    23
    Ciao, in teoria dovresti includere la sub-select dentro alle partentesi tonde (non so se questa cosa sia valida anche per mysql):

    codice:
    
    UPDATE `calciatori`       
       SET        `indice` = 
     ('SELECT         `Indice`      
        FROM `Tabella_Nome`          
    ORDER BY Indice DESC LIMIT 1 )  
        WHERE       `Id_calciatori` = '5'"
    
    F.

  5. #5
    Utente di HTML.it L'avatar di puja
    Registrato dal
    May 2013
    Messaggi
    46
    provato, non funzia ora provo a ingegnarmi in qualche altro modo!


    Grazie intanto, mi hai fatto giungere a metà strada

  6. #6
    Utente di HTML.it L'avatar di puja
    Registrato dal
    May 2013
    Messaggi
    46
    mi sono scattivito e ho semplicemente diviso le due query

    Se qualche anima pia si accorge che c'è un modo per unirle lo scriva pure grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    23
    Ti posso chiedere che errore ti dava la query? Perchè io ho provato in oracle e funziona.. Volevo solo capire se era un limite di MySql...

    Grazie
    F.

  8. #8
    Codice PHP:
    UPDATE `calciatori`       
       
    SET  `indice` = (select last_insert_id() from etc...; 
    dovrebbe funzionare semplicemente cosi'. Deve essere eseguita subito dopo l'insert



    @edit - il nuovo forum per le risposte e' una ciofeca. Mi sta stracciando il creapopoli... (scusate per il crea)
    Ultima modifica di piero.mac; 24-10-2013 a 12:19

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Utente di HTML.it L'avatar di puja
    Registrato dal
    May 2013
    Messaggi
    46
    Quote Originariamente inviata da Fede_91 Visualizza il messaggio
    Ti posso chiedere che errore ti dava la query? Perchè io ho provato in oracle e funziona.. Volevo solo capire se era un limite di MySql...

    Grazie
    F.
    Ciao Fede,

    La query era formalmente corretta ma di fatto non mi aggiornava la tabella.


    Quote Originariamente inviata da piero.mac Visualizza il messaggio

    @edit - il nuovo forum per le risposte e' una ciofeca. Mi sta stracciando il creapopoli... (scusate per il crea)
    UP

    Ciao Piero,

    grazie per la risposta. Ho provato a modificare ma continua a darmi errori assurdi di sintassi

    per il momento lascio così com'è che funziona. Ci tornerò in un secondo tempo.

    Mi viene un'altra domanda però.. Se dovessi inserire un secondo valore nella stessa casella nella quale ho appena inserito il result di questa query, come potrei fare?
    Ultima modifica di puja; 25-10-2013 a 11:58

  10. #10
    Quote Originariamente inviata da puja Visualizza il messaggio
    Mi viene un'altra domanda però.. Se dovessi inserire un secondo valore nella stessa casella nella quale ho appena inserito il result di questa query, come potrei fare?
    se hai gia' un valore numerico farai

    set campo = campo + numero

    se invece e' una stringa usa concat

    set campo = concat(campo, "divisore di campo", "nuova stringa")

    per gli errori che ricevi dovresti postare la query e l'errore ricevuto altrimenti e' come sparare nel mucchio

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.