(WHILE) Percorrer uma tabela e atualizar registros em outra tabela

Minha cordial saudação a todos!
Ao abrir uma Grid preciso percorrer a tabela “doc_pgto_gerado” em que os pagamentos estão pendentes e atualizar a consulta da grid cuja tabela é “inscricoes”. Pra isso no onSriptInit da grid estou usando o seguinte código:

$sql = "SELECT token_pgto, id_logafacil, id_evento, status FROM doc_pgto_gerado GROUP BY token_pgto HAVING id_logafacil = " .[glb_id_logafacil]. " AND id_evento = " .[glb_id_evento]. " AND status='AWAITING_RISK_ANALYSIS' OR status='PENDING'";
sc_select(rs, $sql);

if({rs} !== false) {
	
while(!$rs->EOF) {

$TokenPgto = {rs[0][0]};

$update = "UPDATE inscricoes SET status_pagto = 'PENDENTE' WHERE token_pgto = '".$TokenPgto. "'";
sc_exec_sql($update);
	
$rs->MoveNext();
}
	
$rs->Close();
sc_commit_trans();

}

Está ocorrendo o seguinte erro:
Fatal error : Uncaught Error: Cannot use object of type ADORecordSet_pdo as array in /home/ronaldorfm/public_html/dev/app/app_manage_events/grid_inscricoes_status_pgto/grid_inscricoes_status_pgto_grid.class.php:516 Stack trace: #0 /home/ronaldorfm/public_html/dev/app/app_manage_events/grid_inscricoes_status_pgto/grid_inscricoes_status_pgto_grid.class.php(180): grid_inscricoes_status_pgto_grid->inicializa() #1 /home/ronaldorfm/public_html/dev/app/app_manage_events/grid_inscricoes_status_pgto/index.php(2954): grid_inscricoes_status_pgto_grid->monta_grid(0) #2 /home/ronaldorfm/public_html/dev/app/app_manage_events/grid_inscricoes_status_pgto/index.php(4765): grid_inscricoes_status_pgto_apl->controle() #3 {main} thrown in /home/ronaldorfm/public_html/dev/app/app_manage_events/grid_inscricoes_status_pgto/grid_inscricoes_status_pgto_grid.class.php on line 516

Boa tarde!
Tente trocar:
$TokenPgto = {rs[0][0]};
POR:
$TokenPgto = $rs->fields[0];

Thyago, obrigado por sua resposta.
Substitui o ‘HAVING’ pelo WHERE e fiz a alteração que vc falou.
Agora dando o seguinte erro:

Parse error : syntax error, unexpected '?> ', expecting function (T_FUNCTION) or const (T_CONST) in /home/ronaldorfm/public_html/dev/app/app_manage_events/grid_inscricoes_status_pgto/grid_inscricoes_status_pgto_grid.class.php on line 7229

Vc esta fechando o php em algum lugar que não é pra fechar “?>”

Thyago estava faltando uma chave.
Faço aqui uma pergunta de quem tem pouca experiência em PHP.

No while estou acessando uma tabela. Quando em meio a execução eu acesso outra tabela isso para fazer o UPDATE, de alguma forma eu estaria acessando duas tabelas ao mesmo tempo? Eu não teria que fechar o UPDATE depois que ele executasse?

Não, do jeito que fez ali está correto.

Parou de dar o erro, mas não atualiza o campo.
Coloquei o código no onScriptInit pra que ele corra as tabelas e faça as atualizações antes de abrir a grid.

$sql = "SELECT token_pgto, id_logafacil, id_evento, status FROM doc_pgto_gerado GROUP BY token_pgto WHERE id_logafacil = " .[glb_id_logafacil]. " AND id_evento = " .[glb_id_evento]. " AND (status='AWAITING_RISK_ANALYSIS' OR status='PENDING')";
sc_select(rs, $sql);

if({rs} !== false) {

while(!$rs->EOF) {

$TokenPgto = $rs->fields[0];
	
$update = "UPDATE inscricoes SET status_pagto = 'PENDENTE' WHERE token_pgto = '".$TokenPgto. "'";
sc_exec_sql($update);
	
$rs->MoveNext();
}
	
$rs->Close();
sc_commit_trans();
}

Agradeço ao Thyago sua grande atençao.
Havia colocado o GROUP BY antes do WHERE.
PROBLEMA RESOLVIDO!
Segue o código correto:

$sql = "SELECT token_pgto, id_logafacil, id_evento, status FROM doc_pgto_gerado WHERE id_logafacil = " .[glb_id_logafacil]. " AND id_evento = " .[glb_id_evento]. " AND (status='AWAITING_RISK_ANALYSIS' OR status='PENDING') GROUP BY token_pgto";
sc_select(rs, $sql);

if({rs} !== false) {

while(!$rs->EOF) {

$TokenPgto = $rs->fields[0];
	
$update = "UPDATE inscricoes SET status_pagto = 'PENDENTE' WHERE token_pgto = '".$TokenPgto. "'";
sc_exec_sql($update);
	
	echo $update;
	
$rs->MoveNext();
}
	
$rs->Close();
sc_commit_trans();
}
2 Curtidas