Inserire in Database

di Anonimizzato12620 il
17 risposte
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

  • 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.
  • 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);
    
    
    
    ?>
    
  • Prova a stampare il valore di $db dopo la pg_connect() e di $res dopo la pg_exec()
  • Essendo un processo lanciato tramite comando exec (..) da un altra pagina, non ho modo (o non lo so io) di stampare a video
  • 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
  • Ok provo
  • 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')
  • 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
  • Però comunque timestamp dovrebbe dargli quell'errore
  • 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
  • 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()");
  • 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
  • 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.
  • Per il momento grazie dell'aiuto
Devi accedere o registrarti per scrivere nel forum
17 risposte