• User

    Problema con mysql_num_rows

    Ciao a tutti. Sono nuovo di qui e colgo l'occasione di farvi gli auguri di Buona Pasqua. Passo subito al mio problema. Io vorrei ottenere il valore del campo 'ID' dell'ultimo record inserito in una tabella my sql; quindi dopo che ho creato la connesione scrivo questo:

    $query = "SELECT * FROM files2";
    $result = mysql_query ($query);
    $num = mysql_num_rows ($result);
    $i = 0;
    while ($info = mysql_fetch_row ($result)){
    if($i == $num){
    echo $info[0]; //info[0] corrisponde al campo ID
    }
    $i++;
    }

    Ora se lo lascio così non entra mai nell'if; mentre se al posto di $i mettessi manualmente il valore che corrisponde all'ultima riga inserita (chessò $num == 24) il frammento funziona correttamente.. Dove sbaglio? Sicuramente è un errore del cacchio, ma è tutto il giorno che programmo e mi si incrociano gli occhi... 😉


  • User

    O se no se avete altre proposte su come agire sono ben accette... Mi affido a voi.. Grazie a tutti! 🙂


  • User Attivo

    Per ottenere l'id + alto inserito é sufficiente:

    select id from tabella order by id desc limit 1
    

  • User

    Ciao ho fatto come mi hai detto:

    mysql_connect ($myhost,$myuser,$mypwd);
    mysql_select_db($mydb);

    $query = "SELECT ID FROM files2 ORDER BY ID desc limit 1";
    $result = mysql_query ($query);
    
    echo $result;
    
    mysql_close();   
    

    Mi stampa a video questo risultato: Resource id #29, che significa? Scusa ma è da poco che ho iniziato a studiare MySQL e sono un pò newbie.. 🙂


  • User Attivo

    mysql_query ritorna la risorsa che poi va letta con mysql_fetch...

    Fai così:

    mysql_connect ($myhost,$myuser,$mypwd);
    mysql_select_db($mydb);
    
    $query = "SELECT ID FROM files2 ORDER BY ID desc limit 1";
    $result = mysql_query ($query);
    $record = mysql_fetch_assoc($result);
    
    // DENTRO RECORD HO TUTTI I CAMPI DELLA SELECT
    // IN QUESTO CASO SOLO ID
    $id = $record['ID'];
    
    echo $id;
    
    mysql_close();
    
    

  • User

    Ok sei un grande funziona perfettamente... Grazie ancora e buone feste..


  • User

    Ora però ho un altro problema... non so neanche io se è il caso di aprire una nuova discussione.. Allora io ho una pagina che funziona con il get a cui gli voglio passare due parametri, ovvero $sessione e $data, in modo che mi vada a trovare il record univoco di una tabella identificato appunto univocamente dalla coppia sessione-data. Sessione è ottenuto con la funzione session_id(), data è calolata con la funzione date('U'); la query che faccio dopo essermi connesso è la seguente:

    $query = "SELECT * FROM files2 WHERE data=".$_GET['data']." AND nomecasuale=".$_GET['sessione'];
    	$result = mysql_query ($query);
      	$info = mysql_fetch_row ($result); 
    

    solo che sql mi da errore dicendomi: Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in..
    Allora ho provato a semplificare non passando la coppia session e data, ma solo l'ID anchesso univoco ma ben poco sicuro da passare con il get.. E così facendo funziona:

    $query = "SELECT * FROM files2 WHERE ID=".$_GET['id'];
    	$result = mysql_query ($query);
      	$info = mysql_fetch_row ($result);
    

    Solo che io non vorrei usare l'ID ma vorrei che mi funzionasse con la coppia sessione/data.. Mi potete aiutare? Grazie...[/code]


  • User Attivo

    In questi casi consiglio sempre di fare un echo $query; subito dopo aver creato la stringa di interrogazione. Poi si vede cosa c'é scritto e magari si prova a copiaincollare direttamente come comando del dB. Se c'è qualche errore lo si vede subito!


  • User

    Hai ragione; non avevo voglia di fare un echo perchè pensavo che la query fosse giusta.. Invece mi ero dimenticato gli apici nei valori di session... :arrabbiato: Ore spese a cercare l'errore per niente...