Inserire in Database

di il
17 risposte

Inserire in Database

Buongiorno a tutti ho il seguente problema.

In PHP ho un processo background che si occupa di eseguire alcune operazioni tra cui chiamare tramite exec una pagina php (pagina2.php) che esegue altro operazioni.

In pagina2.php ho inserito il codice molto semplice per inserire dei dati in un database.

Se provo questa pagina da sola funziona ma con il processo che vi ho detto sopra non va (non inserisce nulla).

Il codice per inserire nel db é questo:

$timestamp= "1452765902";
$priority=1;
$file = fopen($fn, "r");
             while(!feof($file)){
              $query = fgets($file);
			  if($query!=""){
							  $db = pg_connect("host=localhost user=postgres password=root dbname=postgres");
	 $query = "INSERT INTO REQUEST(timestamp,idRequest,query,priority,valid) VALUES('$timestamp',DEFAULT,'$query',$priority,'YES') ";
	 
	 //Eseguo la query
	 $res = pg_exec($query);
	 
	 //chiudo la connessione 
	 pg_close($db);
			                }
	          $priority = $priority+1;
             }
         fclose($file);
Grazie a tutti

17 Risposte

  • Re: Inserire in Database

    Devi prima capire cosa non va esattamente: nel pezzo di codice che hai postato si vedono almeno un'apertura di file, una lettura da file, una connessione a db, una query...
    Semplifica il tuo programma e prova magari a fare solo la query, con dati fissi.
  • Re: Inserire in Database

    Ho semplificato di molto per provare ma ancora non va
    
    <?php
    
    //Salvo il tutto su DB
    
    $db = pg_connect("host=localhost user=postgres password=root dbname=postgres");
    
    		$query = "INSERT INTO REQUEST(timestamp,query,priority,valid,UserId) VALUES ('1234567','asdfgg',3,'NO','qazxsw')";
    
            //Eseguo la query
            $res = pg_exec($query);
    
            //chiudo la connessione
            pg_close($db);
    
    
    
    ?>
    
  • Re: Inserire in Database

    Prova a stampare il valore di $db dopo la pg_connect() e di $res dopo la pg_exec()
  • Re: Inserire in Database

    Essendo un processo lanciato tramite comando exec (..) da un altra pagina, non ho modo (o non lo so io) di stampare a video
  • Re: Inserire in Database

    Ti consiglio di scrivere una funzione, chiamiamola loggy(), che appende in un file testo (es."C:\\log.txt") una stringa passata come parametro.
    Questa funzioni la richiami poi per loggare i valori
  • Re: Inserire in Database

    Ok provo
  • Re: Inserire in Database

    Vedendolo il mio consiglio è di inserire il nome della tabella e delle colonne tra gli apici ` esempio:
    INSERT INTO `REQUEST`(`timestamp`,`query`,`priority`,`valid`,`UserId`) VALUES ('1234567','asdfgg',3,'NO','qazxsw')
  • Re: Inserire in Database

    Ciao carbos, anch'io pensavo inizialmente che fosse un semplice problema di sql ma mydb ci ha segnalato che
    Se provo questa pagina da sola funziona ma con il processo che vi ho detto sopra non va (non inserisce nulla)
    e quindi la stringa sql "dovrebbe" essere corretta; aspettiamo che ci comunichi i valori di $db e di $res con i quali potremo forse avere maggiori informazioni sul problema
  • Re: Inserire in Database

    Però comunque timestamp dovrebbe dargli quell'errore
  • Re: Inserire in Database

    Buonasera a tutti.

    Purtroppo la soluzione con gli apici non funziona.

    Non riesco a stampare ne a salvare le variabili $Db e $Res peró posso dirti che al momento della Connection si blocca e non esegue le righe sotto
  • Re: Inserire in Database

    Se tu scrivi una qualsiasi cosa sul file di testo prima di pg_connect() la vedi poi sul file? Così capiamo se la funzione pg_connect() si blocca effettivamente. es.:
    loggy("prima di pg_connect()");
    $db = pg_connect("host=localhost user=postgres password=root dbname=postgres");
    loggy("dopo pg_connect()");
  • Re: Inserire in Database

    Ciao,

    si, se scrivo qualcosa nel file di testo prima della connect tutto ok dopo niente.

    Attualmente ho risolto abbandonando postgresql e usando MySQL stessa query scritta nello stesso modo su MySQL funziona
  • Re: Inserire in Database

    Comunque, dalle prove che hai fatto si evince che il problema non era la query ma la connessione al db, in particolare la funzione pg_connect() che per qualche motivo si inlooppa oppure va in crash.
    La query non centrava niente.
  • Re: Inserire in Database

    Per il momento grazie dell'aiuto
Devi accedere o registrarti per scrivere nel forum
17 risposte