Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: LAST_INSERT_ID()

  1. #1

    LAST_INSERT_ID()

    Devo fare una query che mi estrae l'ultimo record inserito da un DB mysql; scritta così nn me lo restituisce:

    $query_My_query = "SELECT Prezzo FROM macchine WHERE macchine.ID_car = LAST_INSERT_ID()";

    (macchine.ID_car è un campo auto-increment)

    è sbagliato l'uso di LAST_INSERT_ID() ?

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    There are 10 types of people in the world - those who understand binary and those who don't.

  3. #3
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    "SELECT Prezzo FROM macchine ORDER BY ID_car DESC LIMIT 1"

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    E' sbagliato perche' non tiene conto della concorrenza.

    Devi usare una funzione apposita di mysql chiamata mysql_insert_id().

    PS: ho modificato il msg sopra perche' avevo capito un'altra cosa.
    There are 10 types of people in the world - those who understand binary and those who don't.

  5. #5
    Grazie per pronta risposta;

    provo subito


  6. #6
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Dipende da cosa si intende per "ultimo record inserito"
    Magari non ricordo bene, ma LAST_INSERT_ID() va chiamata subito dopo un'insert in una tabella che ha un auto_increment.
    Se voglio l'ultimo record in uno script differente da quello dove c'è la query di inserimento, bisogna usare la stringa che ho scritto io.

  7. #7
    beh, come l'ha scritta VaLvOnAuTa è semplice e funziona di primo acchito; mi domando cosa succede se la uso per ricavare idati del record appena inserito e nel frattempo un altro utente ne inserisce un altro...nel caso sapete dove trovo un tutorial per l'uso di LAST_INSERT_ID() suggerito da frinkia ?

    Grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    460
    "SELECT Prezzo FROM macchine ORDER BY ID_car DESC LIMIT 1" e' come, volendo cercare l'ultima parola del dizionario, leggere tutto il dizionario, ordinarlo e poi prendere l'ultima parola anziche' andare all'ultima pagina e leggere l'ultimo valore.

    Per carita', funziona anche, ma e' un zinzino non ottimizzato. Al massimo potrei capire select MAX(ID_CAR), ma cosi' non e' il top.

    Se anche MAX(ID_CAR) fosse utilizzato, e' comunque concettualmente sbagliato perche' non tiene conto della concorrenza. Se qualcuno dopo la tua insert e prima della tua select ha effettuato un'altra insert, ottieni un'id che non e' quello che vuoi.

    Non e' per caso che nelle api di MySQL c'e' una funzione preposta fatta ad hoc che serve proprio allo scopo. Per inciso, questa funzione e in generale i campi auto-increment sono da evitare in caso di clustering per motivi analoghi.
    There are 10 types of people in the world - those who understand binary and those who don't.

  9. #9
    chiaro frinkia, grazie.

    Ma come si usa LAST_INSERT_ID()per ricavare tutti i campi dell'ultimo record?..mettiamo che voglio ringraziare l'utente per aver inserito un record e gli voglio presentare una pagina con i dati del record inserito

    Era sbagliato come lo avevi scritto all'inizio? (ora rimosso?)

  10. #10
    sorry, volevo dire:


    come si usa --mysql_insert_id()-- per ricavare tutti i campi dell'ultimo record?..mettiamo che voglio ringraziare l'utente per aver inserito un record e gli voglio presentare una pagina con i dati del record inserito

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.