Código Sql funcionava 8.1 parou na 9(loop infinito)

Tenho um código no controle que gera alguns inserts no banco, a questão que na 8.1 funcionava perfeito e na 9 parou de funcionar, gera um loop infinito, e o pior nem o debug me informa… tenso… imagino que possa ser a versão 7 do php, mas não sei o que preciso adaptar agora… por favor se alguém tem uma luz me ajude por favor. Abaixo está a tela mostrando os campos e onde coloquei o código, e logo coloquei o código por completo:

Código completo:

//contador de eventos gerados, iniciando por ‘0’ Zero
$inseriu = 0;
// separar em vetor os médico
$vetor = explode(’;’,{medicos});
$fim = {fim};

foreach ($vetor as $medico) {

//começa delentando os eventos gerados, e inserindo novamente, para apagar gerações erradas
$sql = "delete from evento where data_inicio between '".{inicio}."' and '".{fim}."' and medico_idmedico = $medico";
sc_exec_sql($sql);


//identificando a especialidade do médico / profissional
sc_lookup(dataset, "SELECT `especialidade_idespecialidade` FROM `medico`WHERE `idmedico` =  $medico");
$especialidade = {dataset [ 0 ] [ 0 ]}; //dei um espaçamento maior somente para postar aqui e não perder a configuração

//verificando os horários que os médicos disponibilizaram para atendimento
$sql = “select dia,hora from horarios_medico where medico_idmedico = $medico”;

//pega o resultado do select anterior e inicia o loop
sc_lookup(qrymed,$sql);

$contador = count({qrymed});
for ($b = 0;$b < $contador; ++$b) {
$dia = {qrymed[$b][0]};//verifica dia
$hora = {qrymed[$b][1]};//verifica hora

  //data inicial
  $data = {inicio}; 
	
  //até chegar a data final 
  while ($data <= $fim)  {
	$d = substr($data,6,2);//separar dia
	$m = substr($data,4,2);//separar mês
	$a = substr($data,0,4);//separar ano  
    $diasemana = date("l", mktime(0, 0, 0,$m, $d, $a));//saber o dia da semana, para saber exatamente, mas em inglês
	 //encontrando o dia, insire o evento disponível
	if ($dia == $diasemana) {
		$sql = "insert into evento (titulo,descricao,data_inicio,hora_inicio,recorrencia,periodo,medico_idmedico,sec_users_login,especialidade_idespecialidade)
            values ('$hora :','Consulta Medica','$data','$hora','N','D',$medico,null,$especialidade)";
	    sc_exec_sql($sql); 
		$inseriu++;
    }		
	$data = sc_date($data, "aaaammdd", "+", 1, 0, 0); 
	 
    
  }		  

}

}

sc_alert(“Foram inseridos $inseriu eventos, poderá conferir no calendário do médico correspondente.”);

Altere a opção

for ($b = 0;$b < $contador; ++$b) {

por

for ($b = 0;$b < $contador; $b++) {

Se não for isso, dê alguns echos em seu código para ver em qual momento começa o loop infinito

Olá, favor editar o título, e antes colocar ‘[RESOLVIDO]’…

KKKK Como você sempre posta, caso tenha resolvido

Putz…kkkkk…
Bem que eu queria colocar RESOLVIDO… tá tenso… verifiquei linha a linha, refiz a aplicação e nada… é um mistério… vou deixar aberto pra ver ser algum dos ‘Mestres’ do fórum consegue ver aquilo que eu não vi ainda…

Joelton bom dia,

Após estas linhas:

$sql = “insert into evento (titulo,descricao,data_inicio,hora_inicio,recorrencia,periodo,medico_idmedico,sec_users_login,especialidade_idespecialidade)
values (’$hora :’,‘Consulta Medica’,’$data’,’$hora’,‘N’,‘D’,$medico,null,$especialidade)”;
sc_exec_sql($sql);

Coloque:

sc_commit_trans();

Brincadeiras a parte, é que vejo que você posta bastante essa mensagem e queria saber se era isso para prosseguir.

Caso a opção do Kleyber não resolva, dê um echo em cada trecho para identificar qual parte está incoerente para corrigir

Você não resolveu isso até agora porque você esta VENDO o PROBLEMA de forma GLOBAL INTEIRO, assim nunca vai resolver.

Copie todo este código e guarde um arquivo texto.

E pegue pequenas partes dele, e vá colocando e testando, com echo variável por variável, fazendo isso tenho certeza 100% que você,
vai achar o erro.

E em variáveis locais exemplo: $especialidade, $medico, coloque $_ antes ficando assim: $_especialidade, $_medico, isso é para o SC
não confundir misturar {Campo} com $campo para ele é a mesma coisa, ai dá uns ‘bugs loucos’ e você nunca vai achar onde esta o erro.

Remova também todos os dos comandos SQL: SELECTespecialidade_idespecialidade` ficando assim: SELECT especialidade_idespecialidade

Divisão e conquista:
Divisão e Conquista (do inglês Divide and Conquer) em computação é uma técnica de projeto de algoritmos
utilizada pela primeira vez por Anatolii Karatsuba em 1960 no algoritmo de Karatsuba.
https://pt.wikipedia.org/wiki/Divisão_e_conquista

Não é só aprender a programar que temos, mas técnicas de ‘Debuggar’ o código.

Muito interessante a leitura… Gostei d sugestão do texto…
Vou aplicar todas as outras sugestões e retornare…
Obrigado.