Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    12

    [php] [mysql] duplicazione risultato query senza dover fare un'altra query

    ciao ragazzi..

    ho una query select * che prende più di 200.000 righe

    ho bisogno di fare 2 volte il mysql_fetch_array senza dover chiamare 2 volte il database xkè ci vorrebbe troppo tempo

    se $query = $DB=>query(....);

    faccio il fetch a $query ed è tutto ok

    lo rifaccio la riga sotto e nn va

    ho provato anche a fare $query_due = $query prima di fare il primo fetch e poi fare il mysql_fetch a $query_due ma nulla da fare

    qualcuno ha qualche consiglio per favore?

    grazie

  2. #2
    Utente bannato
    Registrato dal
    Nov 2004
    Messaggi
    202
    Come mai hai bisogno di fare due mysql_fetch_array ?

    Comunque la cosa semplice...

    memorizzi in una variabile il risultato della query e poi la passi come argomento a mysql_fetch_array($variabile) memorizzandola in un'altra variabile.


    Es.

    $1=mysql_db_query(QUERY);
    $2=mysql_fetch_array($1);
    $3=mysql_fetch_array($1);

    Ma stai attento perchè è un'operazione perfettamente inutile... (o meglio è utile se vuoi far lavorare per niente il tuo processore)...

    Come mai devi fare questa operazione 2 volte ?

    P:S: Se non ti funziona posta il codice.

  3. #3
    Si puo' sempre spostare l'indice del result set a zero e ricominciare da capo.

    mysql_data_seek()


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

  4. #4
    doppio post... uscito l'ambo...

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2005
    Messaggi
    12
    fire con quello nn funziona stranamente.. ci ho provato tante volte...

    grazie lo stesso

    piero il tuo è una soluzione alternativa ma funzionate! grazie!

  6. #6
    Originariamente inviato da Sbunno
    piero il tuo è una soluzione alternativa ma funzionate! grazie!
    Non e' alternativa e' "la" soluzione.

    Se invece ti necessita liberare il buffer occupato dal result set devi ciclarlo tutto passandolo in un array. Ogni chiamata a mysql_fetch_array() muove il puntatore del result set in avanti di uno. Rende una tupla per volta. Quindi devi fare un ciclo while che trasferisca tutte le tuple in un array multidimensionale.
    codice:
    while ($row = mysql_fetch_assoc($res) ) {
    
    $array[] = $row;
    
    }
    e poi liberare la memoria con mysql_free_result($res). ASSOC altrimenti i risultati memorizzati saranno doppi. una volta con indice numerico e poi un'altra con indice associativo.


    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.