Visualizzazione dei risultati da 1 a 8 su 8

Discussione: SQlite e query

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682

    SQlite e query

    Stavo provando le varie funzioni di SQlite e mi sono imbattuto in un problema:
    Ho passato a questo metodo la query da eseguire.
    una semplice select.
    Codice PHP:
    class DbData extends SqliteDbConnect
    {
            function 
    GetQueryResult($query)
            {
                    
    $res sqlite_unbuffered_query($this->dbLink$query);
                    return 
    $rows sqlite_fetch_array($res);
            }

    }

    $db =& new DbData("./""data.db");

    $query "SELECT id, file, time FROM file";

    while(list(
    $id$file$time) = $db->GetQueryResult($query)) 
    In questo modo il loop va sempre sul primo record
    e non esce più.
    Mentre se uso le funzioni senza metodi ed oggetti:
    Codice PHP:
    while(list($id$file$time) = sqlite_fetch_array($query)) 
    Ottengo tranquillamente il resulset.
    Sono sicuro che la risposta é semplice ma oggi il mio cervello non ne vuole sapere.
    Grazie a tutti in anticipo.

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682
    Uppetto....e Bubu dice:

  3. #3
    Se non erro nella funzione GetQueryResult() rifai tutte le volte la query ed estrai solo il primo record...


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

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682
    Si praticamente voglio fare la stessa che faccio con questo codice codice
    Codice PHP:
    $dbFile realpath("./")."/data.db";

    $db sqlite_open($dbFile);

    if (!(
    is_resource($db))) {
        
        die(
    "Impossibile aprire uno stream: ".
            
    sqlite_error_string(sqlite_last_error($db)));
    }    

    $query "SELECT id, file, time FROM file";

    $res sqlite_unbuffered_query($db$query);

    while (list(
    $id$file$time) = sqlite_fetch_array($res)) {
        
        echo 
    $id.$file.$time."\n";

    Questo codice funziona solo che quando faccio lo stesso
    diciamo con il metodo $db->GetQueryResult($query)
    il loop restituisce sempre il primo record e rimane
    bloccato li.
    Sto usando lo script da CLI sun windows quindi non
    essendoci un time limit sputa fuori sempre a video
    lo stesso valore.
    Thanks so much Pierozzo

  5. #5
    $res = sqlite_unbuffered_query($db, $query);

    la query deve essere fuori dalla funzione di estrazione. Se ogni volta rifai la query, il WHILE riceve sempre TRUE perche' non si sposta mai dal primo record estratto... e quindi rifa' la query .... ecc. ecc. ed ecco il loop....


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

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682
    Grazie piero dopo provo. Il fatto é che sto lavorando
    su due cose contemporaneamente e non ho un buon supporto
    al multithreading
    Sei stato molto utile

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682
    Ritorno sull'argomento a quanto vedo ho un pessimo feeling
    con i cicli while.
    Ho una funziona ricorsiva semplice come questa:
    Codice PHP:
    function ScanDir($dir
    {
        
        global 
    $db;
        
        if (!(
    $handle opendir($dir)))     {
            
            die(
    "Cannot possible to open $dir");
        }
        
        while (
    false !== ($item readdir($handle))) {
            
            if (
    $item != "." && $item != "..") {
                
                if (
    is_dir($dir."/".$item)) {
                    
                    
    ScanDir($dir."/".$item);
                    
    chdir($dir);
                }else {
                    
                    
    $filepath realpath($dir."/".$item);
                    
                    
                    while (list(
    $id$file$time$db->GetQueryResult())) {
                        
                       echo 
    $filepath."\n";
                    }    
                }
            }        
        }
        
    closedir($handle);
    }

    $dir "c:\\back";

    ScanDir($dir); 
    Becco sempre lo stesso path per tutto il numero di iterazioni.
    Grazie e buon lavoro a tutti.

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682
    Bhe credo che strutturando la cosa in questo modo il problema
    e che la risorsa é globale. Quindi non viene ritornato niente
    e becco sempre il primo id che inizia a leggere.
    Scusate la pollaggine ma scrivo alle ore 0.29 del mio pc.

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.