Newsgroup: it.comp.www.php
Titolo: Ultimo record

Sto cercando di recuperare l'ultimo record inserito.
Ho provato ad usare mysql_insert_id() e LAST_INSERT_ID() ma in entrambi i 
casi ottengo questa risposta:
Fatal error: Call to undefined function LAST_INSERT_ID() in 
/home/mdsintrasite/inc_strumenti_l_3.php on line 39
Ovviamente in quella riga c'č la chiamata alla funzione cosě scritta:
$ultima_giornata_inserita = LAST_INSERT_ID();
oppure
$ultima_giornata_inserita = mysql_insert_id()
Mi date una mano a capire come funzionano?
Grazie mille. 

 $ultima_giornata_inserita = mysql_insert_id()
Prova con $ultima_giornata_inserita=mysql_insert_id($id_della_connessione); 

E cosa contiene quella variabile?

>E cosa contiene quella variabile?
Contiene l'identificativo connessione, se lo usi. Se ti connetti 
direttamente lo puoi omettere, ma accertati di non aver chiuso la 
connessione prima di usare mysql_insert_id 

 $ultima_giornata_inserita = LAST_INSERT_ID();
ovvio: LAST_INSERT_ID() e' una funzione mysql, non php
dovresti fare una SELECT LAST_INSERT_ID() FROM tabella
e poi fetchare il risultato

 $ultima_giornata_inserita = LAST_INSERT_ID();
LAST_INSERT_ID() e' una funzione di MySQL *NON* di PHP e
pertanto la devi eseguire all'interno di una query, e
leggerne il risultato.
mysql_insert_id() e' invece una funzione MySQL.
Attenzione: la connessione DEVE rimanere aperta. Se apri
la connessione, inserisci e chiudi, poi ri-apri, leggi
l'ultimo ID e chiudi, entrambe le funzioni potrebbero
restituire un dato non corretto.
Un altro appunto. mysql_insert_id() converte il tipo del
campo autoincrement in un long (int in php). Se il campo
nel DB e' diverso (ad es. un BIGINT) mysql_insert_id()
restituira' un valore non corretto ed in questo caso
e' meglio usare la funzione MySQL (LAST_INSERT_ID())
Se l'inserimento fa uso del costrutto "ON DUPLICATE
KEY UPDATE" LAST_INSERT_ID() potrebbe non restituire il
valore corretto, infatti in caso di campo duplicato (e quindi
di update) restituira' l'indice incrementato di 1 "come se"
fosse avvenuto un inserimento, mentre in realta' e'
avvenuto un update.
In questo caso mysql_insert_id() restituisce il valore della
riga modificata e non un valore inesistente.
Infine, se l'inserimento viene fatto forzando un valore al
campo id, sia pure esso NULL o 0, solo mysql_insert_id()
restituira' il valore corretto, poiche' LAST_INSERT_ID()
restituisce SOLO valori generati automaticamente
dall'auto_increment.
------------------------------------------------------------
Es.:
'Apro la connessione
mysql_connect("localhost", "utente_mysql", "password_mysql")
       or die("Connessione non riuscita: ".mysql_error());
'Effettuo un inserimento
$sql="INSERT INTO `test` SET `value`='valore';"
mysql_query($sql);
'Leggo il valore dell'ID dell'ultimo inserimento effettuato
'usando la funzione di PHP
$lastid_using_php=mysql_insert_id();
'Leggo il valore dell'ID dell'ultimo inserimento effettuato
'usando la funzione di MySQL.
$sql="SELECT LAST_INSERT_ID();";
if($rs=mysql_query($sql)) {
   if ($row=mysql_fetch_row($rs)) {
      $lastid_using_mysql=$row[0];
   }
}
mysql_close();
------------------------------------------------------------
hth,
Lokar