Scusate... non avevo visto l'anteprima.... il codice è questo... non riesco ancora a capire come poter ripetere lo stesso while passando i valori ...
domanda... i record sono circa 40.000...
scusate l'ipotesi magari strampalata...: potrei utilizzare 2 array depositando ad ogni ciclo il valore degli id e poi utilizzare gli array per passare i valori a 2 statement per vedere il vecchio valore ed il nuovo?.....
Scusate ma sono agli inizi e vedo ancora molto buio...
codice:<?php date_default_timezone_set('Europe/Rome'); // Imposto i parametri di connessione $serverName = "localhost"; $connectionInfo = array( "Database"=>"Sicura", "UID"=>"Profiler", "PWD"=>"65tekra20" ); //Effettuo la connessione al database $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn === false ) { die( print_r( sqlsrv_errors(), true)); } // esecuzione della query che imposta i parametri di riferimento per tutti i contratti da aggiornare definizione del primo ciclo $sql = "SELECT [IDCONTRATTO] ,[CodiceSezUpdated],[OreSezUpdated] FROM [Sicura].[dbo].[BiriOreSezUpdated]"; $params = array(); $options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET ); $stmt = sqlsrv_query( $conn, $sql , $params, $options ); $row_count = sqlsrv_num_rows( $stmt ); // Se l'oggetto è vuoto restituisco un errore if( $stmt === false ) { die( print_r( sqlsrv_errors(), true)); } //Inizio del primo ciclo, per ogni record origine ricerco i vecchi contratti while($obj = sqlsrv_fetch_object($stmt)) { //Setto i valori di contratto, sezione ed ore origine $contrattoorigine=$obj->IDCONTRATTO; $sezioneorigine=$obj->CodiceSezUpdated; $oreupdatedorigine=$obj->OreSezUpdated; //Inposto la prima ricerca per il primo rinnovo $sql1 = "SELECT [IDCONTRATTO] ,[SEZIONECONTRATTO] ,[OLD_RifSezioneGemma] ,[ORE_INT], [SEZIONECONTRATTO_Prec] FROM [Sicura].[dbo].[GEM_SEZIONICONTRATTO] WHERE [IDCONTRATTO]='".$contrattoorigine."' and [SEZIONECONTRATTO]='".$sezioneorigine."'"; $stmt1 = sqlsrv_query( $conn, $sql1 , $params, $options ); if( $stmt1 === false ) { die( print_r( sqlsrv_errors(), true)); } //Secondo Ciclo, ricerco il primo contratto rinnovato while($obj1 = sqlsrv_fetch_object($stmt1)) { /**Imposto i valori del primo contratto rinnovato */ $contrattotoupdate=$obj1->IDCONTRATTO; $sezionetoupdate=$obj1->SEZIONECONTRATTO; $ore_inttoupdate=$obj1->ORE_INT; $sqlu = "INSERTINTO BiriOreSezUpdatedLog(IDCONTRATTOBASE, CodiceSezUpdatedBASE, OreSezUpdatedBASE, IDCONTRATTOBASETU, CodiceSezTU, OreSezBefore) VALUES ( ?, ?, ?, ?, ?, ? )"; $params4 = array($contratto, $sezione, $oreupdated,$contratto4,$sezione4, $oreint4); $stmtU4 = sqlsrv_query( $conn, $sqlu4, $params4); } //FIne sEcondo ciclo } sqlsrv_close($conn); ?>

Rispondi quotando