Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    function che si connete a database mi blocca le query successive

    ciao, ho questo codice semplificato:

    codice:
    <?	
    $data = new Database();
    $sql = "SELECT * FROM CATALOGHI
            WHERE CAT_ID = " . $_GET["cat"];
    	
    $result = $data->Command($sql);
    if($data->GetNumRows() > 0) {
      $rec = $data->Iterate();
      $variabile = NameImage($rec["campo1"]);
    }
    
    include ("inc-prova.php"); 
    
    $data->Close() 
    ?>
    Questo e' il file inc-prova.php:

    codice:
    <?
    $sql = "SELECT * FROM SERIE
    WHERE SER_ID_CAT = " . $_GET["cat"];
    
    $result = $data->Command($sql);
    ?>
    e questa la funzione:

    codice:
    function NameImage($img) {
    
      $dataImg = new Database();
      $sql = "SELECT * FROM IMAGE
              WHERE IMG_ID = " . $img;
    					
      $result = $dataImg->Command($sql);
    	
      if ($dataImg->GetNumRows() > 0) {	
        $recImg = $dataImg->Iterate();
        $nomeImg = $recImg["IMG_NOME"];
      }
    	
      $dataImg->Close();
      return $nomeImg;
    }
    ebbene la seconda query sulla tabella SERIE mi da un errore dicendo che non e' possibile eseguirla.

    se nel file include creo una nuova istanza a database funziona

    data2 = new Database();

    se tolgo la funziona NameImage funziona.

    sapete come mai? è un problema che non riesco ad intiure.

    grazie mille ciao.
    Domenico

  2. #2
    problema stranissimo che proprio non riesco a capire

    ho fatto altre prove e se nella prima riga del file inc-prova.php inserisco:

    echo $data->GetRows();

    che restituisce il numero di righe della prima query funziona.

    quindi la variabile data e' visibile all'interno del file incluso. Pero' ugualmente la seconda query non viene eseguita.

    poi ho provato a commentare l'istruzione che chiude la connessione al database nella funzione NameImage

    // $dataImg->Close();

    e sorprendentemente tutto funziona correttamente.

    a questo punto non so come questa Close (nella funzione) possa andare a influenzare la connessione nel file principale.
    e non so neanche perchè la compromette solo nell'esecuzione di una nuova query e non per esempio nel controllo del numero dei record.

    non vi pare stranissimo. magari e' normale ma non mi spiego il motivo.

    se qualcuno più esperto di me sa spiegarmelo gli sarei molto grato.

    ciao

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.