[RESOLVIDO] Método PHP - Comando Insert

Tenho essa função em método PHP que faz o Insert em uma tabela, e não consegui localizar onde está ocorrendo o erro. Todos os campos foram preenchidos.

Agradeço desde já a ajuda.

(pdo-mysql): INSERT INTO mov_ccorrente (cc_id, data, cta_contab_D, cta_contab_C, valor, historico, tipomov_id, empresa_id
VALUES (‘3’, ‘20190725’, ‘120’, ‘11’, ‘5000.00’, ’ Pagto do valor parcial - doc. nº 150001 de LIMEIRÃO COM. DE FERRAGENS LTDA, -> Saldo de R$ 7.000,00. ', ‘2’, ‘1’)

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 ‘VALUES (‘3’, ‘20190725’, ‘120’, ‘11’, ‘5000.00’, ’ Pagto do valor parcial - doc.’ at line 1
ADOConnection._Execute(INSERT INTO mov_ccorrente (cc_id, data, cta_contab_D, cta_contab_C, valor, historico, tipomov_id, empresa_id VALUES (‘3’, '20190…, false) % line 1149, file: adodb.inc.php
ADOConnection.Execute(INSERT INTO mov_ccorrente (cc_id, data, cta_contab_D, cta_contab_C, valor, historico, tipomov_id, empresa_id VALUES (‘3’, '20190…) % line 4506, file: ctlctos_bx_form_apl.php
ctlctos_bx_form_apl.lancar_movimento_pg() % line 2017, file: ctlctos_bx_form_apl.php
ctlctos_bx_form_apl.Valida_campos(null, null, null) % line 1317, file: ctlctos_bx_form_apl.php
ctlctos_bx_form_apl.controle() % line 2082, file: index.php


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

‘VALUES (‘3’, ‘20190725’, ‘120’, ‘11’, ‘5000.00’, ’ Pagto do valor parcial - doc.’ at line 1

INSERT INTO mov_ccorrente (cc_id, data, cta_contab_D, cta_contab_C, valor, historico, tipomov_id, empresa_id

VALUES (‘3’, ‘20190725’, ‘120’, ‘11’, ‘5000.00’, ’ Pagto do valor parcial - doc. nº 150001 de LIMEIRÃO COM. DE FERRAGENS LTDA, -> Saldo de R$ 7.000,00. ', ‘2’, ‘1’)

Att.,

Mauricio Buchmeier

O campo histórico tem tamanho necessário para a qtde de caracteres que está tentando inserir?

1 Curtida

Quais são os tipos das colunas: cc_id, data, cta_contab_D, cta_contab_C, valor, historico, tipomov_id, empresa_id
E quais seus tamanhos?

1 Curtida

Olá Marcelo,

Estava inicialmente como Text e depois desse erro alterei pata LongText porém deu o mesmo erro.

Experimente não usar caracteres especiais… tipo este aqui: doc. nº

1 Curtida

falta fechar parenteses após empresa_id

2 Curtidas

Olá Joelton,

Está assim:

Id | int(11) Incremento Automático

cc_id | int(11)
data | date
valor | decimal(12,2)
cta_contab_D | varchar(10)
cta_contab_C | varchar(10)
histórico | longtext
tipomov_id | int(11)
empresa_id |int(3)

Olá Haroldo,

Está assim:

$insert_table = ‘mov_ccorrente’;
$insert_fields = array(
‘cc_id’ => “’{ctacorrente}’”,
‘data’ => “’{data_pgto}’”,
‘cta_contab_D’ => “’{cta_debito}’”, // Fornecedor
‘cta_contab_C’ => “’{cta_credito}’”, // Conta Corrente
‘valor’ => “’{valor_pago}’”,
‘historico’ => “’ $_historico '”,
‘tipomov_id’ => “’{tipo_mov_saida}’”,
‘empresa_id’ => “’{empresa_id}’”,
);

Olá Kleyber,

Tentei assim:

doc. num. ‘.{documento}.’ de ‘.{parceiros}.’.’;

E:

INSERT INTO mov_ccorrente (cc_id, data, cta_contab_D, cta_contab_C, valor, historico, tipomov_id, empresa_id VALUES (‘3’, ‘20190725’, ‘120’, ‘11’, ‘5000.00’, ’ Pagto do valor parcial - doc. num. 150001 de LIMEIRÃO COM. DE FERRAGENS LTDA, -> Saldo de R$ 7.000,00. ', ‘2’, ‘1’)

Também não deu certo.

Duas dicas:

  1. Evite usar palavras reservadas como nome de campos. Troque Data por dt_movimento (por exemplo)
  2. O formato do campo “date” no mysql é “aaaa-mm-dd”, a string que está tentando salvar está como “aaaammdd”

Faça estas alterações e tente novamente!

1 Curtida

Vou repetir. Falta parenteses após coluna empresa_id.

Instrução correta: INSERT INTO tabela () values ();

2 Curtidas

Ah, sim conforme Haroldo, falta parênteses no final da instrução “VALUES”.
Mas veja as questões de palavras reservadas e a formatação da data.
Abraços

1 Curtida

reforçando o que o Haroldo falou:
tipomov_id, empresa_id ) VALUES

uma coisa também, troque as aspas para '

1 Curtida

Id | int(11) Incremento Automático - OK!

cc_id | int(11) - “’{ctacorrente}’”?? Aspas simples? É número, apenas duplas.
data | date - OK
valor | decimal(12,2) - “’{valor_pago}’”?? Aspas simples? É número, apenas duplas.
cta_contab_D | varchar(10) - Tamanho 10? De onde vem esta informacao também é 10?
cta_contab_C | varchar(10) - Tamanho 10? De onde vem esta informacao também é 10?
histórico | longtext
tipomov_id | int(11) - “’{tipo_mov_saida}’”?? Aspas simples? É número, apenas duplas.
empresa_id |int(3) - “’{empresa_id}’”?? Aspas simples? É número, apenas duplas.

A última linha está errada…
‘empresa_id’ => “’{empresa_id}’”,
);
Você colocou vírgula, tem que tirá-la depois que declarou a empresa… ficando assim
‘empresa_id’ => “{empresa_id}”
);

E esta parte também está errada…
INSERT INTO mov_ccorrente (cc_id, data, cta_contab_D, cta_contab_C, valor, historico, tipomov_id,
Você terminou o insert com vírgula, e faltou o fechamento do parênteses.
Tem que ser assim…
INSERT INTO mov_ccorrente (cc_id, data, cta_contab_D, cta_contab_C, valor, historico, tipomov_id)

1 Curtida

Isso mesmo,

Estava

$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields))
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql);

Alterei para:

// Insert record
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

sc_exec_sql($insert_sql);

Valeu!!!