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

Discussione: IO Vs mysql_insert_id

  1. #1

    IO Vs mysql_insert_id

    Ciao a tutti,

    non riesco a capire perchè non mi funge il comando mysql_insert_id in questo script:

    Codice PHP:
    //stampa l'ultimo evento inserito:
        //CONNESSIONE
        
    mysql_connect('local','user','pass') or die ("Non è stato possibile collegarsi al database. ADMIN: controlla i dati di accesso"mysql_error());
        
    mysql_select_db('db');
        
    $query=mysql_query("SELECT * FROM eventi") or die ("Non è sttao posibbile collegarsi al database eventi".mysql_error());
    $ultimo_evento=mysql_insert_id();
    echo 
    $ultimo_evento;
    ?> 
    mi da come risultato 0 mentre l'ultimo id inserito non è 0 perchè?

    Ringrazio anticipatamente a quanti vogliano aiutarmi..

  2. #2
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ciao ...

    tu nella query non stai facendo un insert , ma una select.
    Se non erro il mysql_insert_id riconosce l'ultimo id che hai appena inserito...
    se vuoi sapere qual'è l'ultimo id che hai inserito in un capo auto_increment basta che prendi il valore piu alto del tuo id, essendo auto_increment sai che il valore più alto sarà quello appena inserito

  3. #3
    prova così:

    Codice PHP:

     $query
    =mysql_query("SELECT * FROM eventi ORDER BY ideventi LIMIT 1"

  4. #4
    Ho corretto così:

    Codice PHP:
    $query=mysql_query("SELECT * FROM eventi ORDER BY id LIMIT 1") or die ("Non è sttao posibbile collegarsi al database eventi".mysql_error());
        
    $ultimo_evento=mysql_fetch_assoc($query);
    echo 
    $ultimo_evento
    Ma ora mi compare:

    codice:
    Array
    come risolvere?

  5. #5
    prova così:

    Codice PHP:

    while ($row mysql_fetch_array($query)) {

    $ultimo $row['evento'];

    }

    echo 
    $ultimo
    ovvio devi adattarlo al tuo script...

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Ti consiglio di studiarti un po' le funzioni di MySql.

    mysql_fetch_assoc torna un array, non il singolo valore da te cercato.

    Prova con mysql_fetch_row, funzione che invece ti torna (sempre un array) ma contentente una sola riga di ciò che hai cercato.

    Codice PHP:
    $query mysql_query("SELECT * FROM eventi ORDER BY id LIMIT 1") or die ("Non è stato possibile collegarsi al database eventi".mysql_error()); 

    $ultimo_evento=mysql_fetch_row($query); 

    // nel caso tu assegni indici numerici, sarà l'ordine dei campi della tua tabella eventi (tipo evento_id, evento_nome... e capisci che puoi usare un ciclo per scorrerli automaticamente
    echo $ultimo_evento[0]; 
    echo 
    $ultimo_evento[1]; 

    // oppure se vuoi il valore direttamente via nome del campo
    echo $ultimo_evento['evento_id']; 
    Ti consiglio una letta a:

    http://it.php.net/manual/en/function...-fetch-row.php
    http://it.php.net/manual/en/function...etch-array.php
    http://it.php.net/manual/en/function...etch-assoc.php

  7. #7
    Diego_vl : Non va ma grazie lo stesso.

    seokey: Grande Ho dovuto solo fare una piccola modifica nella query perchè lasciandola per com'era visualizzava solo il primo e non l'ultimo invece così:

    Codice PHP:
    $query=mysql_query("SELECT * FROM eventi") or die ("Non è sttao posibbile collegarsi al database eventi".mysql_error());
    while (
    $row mysql_fetch_array($query)) {

    $ultimo $row['evento'];


    va alla grande grazie mille.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Originariamente inviato da ciarlystreet
    Diego_vl : Non va ma grazie lo stesso.

    seokey: Grande Ho dovuto solo fare una piccola modifica nella query perchè lasciandola per com'era visualizzava solo il primo e non l'ultimo invece così:

    Codice PHP:
    $query=mysql_query("SELECT * FROM eventi") or die ("Non è sttao posibbile collegarsi al database eventi".mysql_error());
    while (
    $row mysql_fetch_array($query)) {

    $ultimo $row['evento'];


    va alla grande grazie mille.
    In che senso "non va?"

    Concettualmente quello che hai fatto tu ora, è completamente sbagliato ed inutile =)

  9. #9
    Originariamente inviato da Diego_vl
    In che senso "non va?"

    Concettualmente quello che hai fatto tu ora, è completamente sbagliato ed inutile =)

    modificando la query non ho provato avevo provato con la query così:

    Codice PHP:
    $query=mysql_query("SELECT * FROM eventi ORDER BY id LIMIT 1") or die ("Non è sttao posibbile collegarsi al database eventi".mysql_error()); 
    Ora provo e ti faccio sapere grazie cmq per l'interessamento

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2008
    Messaggi
    218
    Ti spiego brevemente perché concettualmetne è sbagliato quello che ti hanno suggerito, ma dato che sei all'inizi sono sicuro che si prende per buono quello che funziona

    Se hai la possibilità di recuperare direttamente (tramite un limit nella query e la funzione mysql_fetch_row) non ha senso recuperare TUTTI i valori della tabella, metterli in un ciclo e recuperare l'ultimo.

    E' un spreco di risorse, e non ha senso farlo se ci sono funzioni adatte a questo scopo

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.