AJUDA COM UM CODIGO

Olá, tenho este código no evento afterupdate onde atualizo os dados em uma outra tabela. Fiz o código para inserção e de exclusão. Ambos funcionam perfeitamente. mas este de atualização não funciona. O que estou fazendo de errado?

// SQL statement parameters
$update_table = ‘detalhe_cotacao_incluir’; // Table name
$update_where = “detalhe_cotacao_id = ‘{id}’”; // Where clause
$update_fields = array( // Field list, add as many as needed
‘detalhe_cotacao_id’ => “’{id}’”,
‘cotacao_id’ => “’{cotacao_id}’”,
‘comprador_id’ => “’{comprador_id}’”,
‘comprador_usuario_id’ => “’{comprador_usuario_id}’”,
‘vendedor_id’ => “’{vendedor_id}’”,
‘vendedor_usuario_id’ => “’{vendedor_usuario_id}’”,
‘descricao’ => “’{descricao}’”,
‘quantidade’ => “’{quantidade}’”,
‘unidade’ => “’{unidade}’”,
‘situacao’ => “’{situacao}’”,
‘prazoEntrega’ => “’{prazoEntrega}’”,
‘parcelaEntrega’ => “’{parcelaEntrega}’”,
‘intervaloParcela’ => “’{intervaloParcela}’”,
‘dataIntervalo’ => “’{dataIntervalo}’”,
);
// Update record
$update_sql = ‘UPDATE ’ . $update_table
. ’ SET ’ . implode(’, ', $update_fields)
. ’ WHERE ’ . $update_where;
sc_exec_sql($update_sql);

Coloque em modo debug

Olá, Haroldo.
Dá esta mensagem no debug.

"1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '‘49’, ‘3’, ‘2’, ‘1’, ‘0’, ‘0’, ‘LUSTRE QUARTO’, ‘20’, ‘8’, ‘1’, ‘30’, ‘0’, ‘0’, ’ at line 1

                 ADOConnection._Execute(UPDATE detalhe_cotacao_incluir SET '49', '3', '2', '1', '0', '0', 'LUSTRE QUARTO', '20', '8', '1', '30', '0', '0', 'null' WHERE ..., false) % line 1085, file: adodb.inc.php
              ADOConnection.Execute(UPDATE detalhe_cotacao_incluir SET '49', '3', '2', '1', '0', '0', 'LUSTRE QUARTO', '20', '8', '1', '30', '0', '0', 'null' WHERE ...) % line 6061, file: form_detalhe_cotacao_apl.php
           form_detalhe_cotacao_apl.atualizaItenCotacao() % line 5397, file: form_detalhe_cotacao_apl.php
        form_detalhe_cotacao_apl.nm_acessa_banco() % line 2033, file: form_detalhe_cotacao_apl.php
     form_detalhe_cotacao_apl.controle_form_vert() % line 1647, file: form_detalhe_cotacao_apl.php"

Olá,
Tenta tirar a última “,”

‘dataIntervalo’ => “’{dataIntervalo}’”, < - tira essa vírgula pra ver.

Tirei a vírgula, mas continua dando o erro Ele acusa um erro de sintaxe. Na inserção ele tem a vírgula e funciona.
Este é o erro:
“ERRO Erro ao acessar o banco de dados
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘55’, ‘1500007’, ‘0’, ‘0’, ‘0’, ‘0’, ‘PIA’, ‘1’, ‘1’, ‘1’, ‘2’, ‘0’, ‘0’, ‘null’’ at line 1”

Bom dia!

Tira todos os ‘>’ depois dos = que deverá funcionar.

apresente o select do modo debug por completo aqui.

O Select do Debug:
"i: SELECT id, imagem, cotacao_id, comprador_id, comprador_usuario_id, vendedor_id, vendedor_usuario_id, item, codigoCotacao, descricao, quantidade, precoUnitario, valorTotal, unidade, fabricante, embalagem, quantidadeEmbalagem, observacao, situacao, prazoEntrega, parcelaEntrega, intervaloParcela, dataIntervalo from detalhe_cotacao order by id LIMIT 0,10 [/i] "

O Erro na Atualização:
"i: SET AUTOCOMMIT=0 (mysqlt): BEGIN (mysqlt): select count(*) from detalhe_cotacao where id = 31 (mysqlt): UPDATE detalhe_cotacao SET descricao = ‘CORTE DE TECIDO COM 30 METROS DE COMPRIMENTO POR 1,40 DE LARGURA’, quantidade = 2, unidade = ‘1’, situacao = ‘1’, prazoEntrega = 0, parcelaEntrega = 0, intervaloParcela = 0, dataIntervalo = null WHERE id = 31 (mysqlt): SELECT id, unidade FROM unidade ORDER BY id (mysqlt): UPDATE detalhe_cotacao_incluir SET ‘31’, ‘1500006’, ‘’, ‘’, ‘’, ‘’, ‘CORTE DE TECIDO COM 30 METROS DE COMPRIMENTO POR 1,40 DE LARGURA’, ‘2’, ‘1’, ‘1’, ‘0’, ‘0’, ‘0’, ‘null’ WHERE detalhe_cotacao_id = ‘31’ 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '‘31’, ‘1500006’, ‘’, ‘’, ‘’, ‘’, ‘CORTE DE TECIDO COM 30 METROS DE COMPRIMENTO P’ at line 1

                 ADOConnection._Execute(UPDATE detalhe_cotacao_incluir SET '31', '1500006', '', '', '', '', 'CORTE DE TECIDO COM 30 METROS DE COMPRIMENTO POR 1,40 DE LA..., false) % line 1085, file: adodb.inc.php
              ADOConnection.Execute(UPDATE detalhe_cotacao_incluir SET '31', '1500006', '', '', '', '', 'CORTE DE TECIDO COM 30 METROS DE COMPRIMENTO POR 1,40 DE LA...) % line 6061, file: form_detalhe_cotacao_apl.php
           form_detalhe_cotacao_apl.atualizaItenCotacao() % line 5397, file: form_detalhe_cotacao_apl.php
        form_detalhe_cotacao_apl.nm_acessa_banco() % line 2033, file: form_detalhe_cotacao_apl.php
     form_detalhe_cotacao_apl.controle_form_vert() % line 1647, file: form_detalhe_cotacao_apl.php

(mysqlt): ROLLBACK (mysqlt): SET AUTOCOMMIT=1"[/i]

JÁ TESTEI ISSO TAMBÉM, MAS NÃO FUNCIONA - NÃO CARREGA A APLICAÇÃO.
E FUNCIONA NA INCLUSÃO PERFEITAMENTE.

JÁ OLHEI TUDO E NÃO ENCONTRO O ERRO.

UPDATE detalhe_cotacao_incluir SET ‘31’, ‘1500006’, …

Isso esta errado.

UPDATE tabela SET coluna= valor, coluna2=valor2 …

// SQL statement parameters
$update_table  = 'detalhe_cotacao_incluir';      // Table name
$update_where  =  "detalhe_cotacao_id = '{id}'"; // Where clause
$update_fields = array(   // Field list, add as many as needed
     'detalhe_cotacao_id' => "'{id}'",
     'cotacao_id' => "'{cotacao_id}'",
     'comprador_id' => "'{comprador_id}'",
    'comprador_usuario_id' => "'{comprador_usuario_id}'",   
     'vendedor_id' => "'{vendedor_id}'",
    'vendedor_usuario_id' => "'{vendedor_usuario_id}'",   
    'descricao' => "'{descricao}'",
     'quantidade' => "'{quantidade}'",
     'unidade' => "'{unidade}'",
     'situacao' => "'{situacao}'",
     'prazoEntrega' => "'{prazoEntrega}'",
     'parcelaEntrega' => "'{parcelaEntrega}'",
     'intervaloParcela' => "'{intervaloParcela}'",
     'dataIntervalo' => "'{dataIntervalo}'",   
 );
// Update record
$update_sql = 'UPDATE ' . $update_table
    . ' SET '   . implode(', ', $update_fields)
    . ' WHERE ' . $update_where;
//sc_exec_sql($update_sql);

echo $update_sql;

comente a linha da execução do update e acrescente o echo, veja se a instrução esta sendo montada corretamente.

OLÁ, HAROLDO.
ESTÁ CORRETO NO ECHO, MAS NO RESULTADO CONTINUA DANDO O ERRO. O QUE PODE SER?
UPDATE detalhe_cotacao_incluir SET ‘56’, ‘1500006’, ‘0’, ‘0’, ‘0’, ‘0’, ‘PANO DE PRATO’, ‘50’, ‘1’, ‘1’, ‘10’, ‘0’, ‘0’, ‘null’ WHERE detalhe_cotacao_id = ‘56’

se esse é seu echo: “UPDATE detalhe_cotacao_incluir SET ‘56’, ‘1500006’, ‘0’, ‘0’, ‘0’, ‘0’, ‘PANO DE PRATO’, ‘50’, ‘1’, ‘1’, ‘10’, ‘0’, ‘0’, ‘null’ WHERE detalhe_cotacao_id = ‘56’”

Volto a afirmar que a instrução esta errada.

faltam o nome das colunas e o = antes de cada valor, seu implode não esta funcionando corretamente.

campos numéricos retire as aspas duplas e simples.

exemplo:

‘detalhe_cotacao_id’ => “’{id}’”,

para ->

‘detalhe_cotacao_id’ => {id},

HAROLDO, VC É O CARA. DEU CERTO!
AGRADEÇO MUITO POR SEU TEMPO, EMPENHO E, PRINCIPALMENTE, PELA GENEROSIDADE!
FORTE ABRAÇO!