Erro no WHILE - Deletando registros correspondentes em outra tabela

Senhores, minha cordial saudação!

O comando está no onBeforeDelete.

Preciso deletar os registros cujo valor do {token} no formulário seja igual nas diversas tabelas.
Alguma coisa fiz de errado no WHILE que está dando erro.

$delete_table  = 'pagamentos_inscricao_evento';      // Table name
$delete_where  = "token_pgto = '" .{token}. "'"; // Where clause

$delete_sql = 'DELETE FROM ' . $delete_table
    . ' WHERE '      . $delete_where;
sc_exec_sql($delete_sql);

//O ERRO ESTÁ OCORRENDO NESTA PARTE
$sql = "SELECT token_inscricao FROM inscritos_evento WHERE token_pgto = '" .{token}. "'";
sc_select(rs, $sql);

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

$TokenInscricao = {rs[0][0]};
	
$delete_table  = 'inscritos_disciplina_oficina';      // Table name
$delete_where  = "token_inscricao = '" .$TokenInscricao. "'"; // Where clause

// Delete record
$delete_sql = 'DELETE FROM ' . $delete_table
    . ' WHERE '      . $delete_where;
sc_exec_sql($delete_sql);
	
$rs->MoveNext();
}
$rs->Close();
}

$delete_table  = 'inscritos_evento';      // Table name
$delete_where  = "token_pgto = '" .{token}. "'"; // Where clause

$delete_sql = 'DELETE FROM ' . $delete_table
    . ' WHERE '      . $delete_where;
sc_exec_sql($delete_sql);

TROQUE $TokenInscricao = {rs[0][0]};
POR $TokenInscricao = $rs->fields[‘token_inscricao’];

1 Curtida

Sempre exponha código entre [code] e [/code]

Luiz Paulo, obrigado por sua atenção!
Fiz a alteração e continua dando o seguinte erro:
Fatal error : Uncaught Error: Call to a member function MoveNext() on array in /home/ronaldorfm/public_html/dev/app/genesis1/form_tokens/form_tokens_apl.php:3310 Stack trace: #0 /home/ronaldorfm/public_html/dev/app/genesis1/form_tokens/form_tokens_apl.php(1326): form_tokens_apl->nm_acessa_banco() #1 /home/ronaldorfm/public_html/dev/app/genesis1/form_tokens/index.php(2200): form_tokens_apl->controle() #2 {main} thrown in /home/ronaldorfm/public_html/dev/app/genesis1/form_tokens/form_tokens_apl.php on line 3310

O looping ocorre na tabela ‘inscritos_evento’ e dentro desse looping eu deleto registros na tabela ‘inscritos_disciplina_oficina’. Será que esse conflito seria pelo fato de ter duas tabelas abertas ao mesmo tempo?

Haroldo, primeiramente muito obrigado por sua atenção!
Se entendi, é pra eu delimitar início e fim de cada código. Seria isso?

aqui quando for colar código de programação col entre as tags:

[code] Seu Código ... [/code]

para que o código fique mais legível

Feito!
Fiz a troca sugerida pelo Luiz Paulo, mas continua dando o erro.

@ronaldorfm, se comentar essa parte,


// Delete record
//$delete_sql = 'DELETE FROM ' . $delete_table
//    . ' WHERE '      . $delete_where;
//sc_exec_sql($delete_sql);
 

o erro continua?

Outra tentativa é escrever o comando direto na macro

sc_exec_sql("DELETE FROM inscritos_disciplina_oficina
             WHERE token_inscricao = '".$TokenInscricao."'");

Verifica também se há, no banco, alguma chave estrangeira nas tabelas, isso pode impedir de apagar os registros.

não dê o “next” porque o delete já move o ponteiro

:thinking:

Boa tarde Ralph!

A ideia é ao deletar o registro na tabela ‘pagamentos_inscricao_evento’, e, consequentemente, deletar também todo registro que tiver o mesmo valor de ‘$TokenInscricao’.na tabela ‘inscritos_disciplina_oficina’.