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);
?>