Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Difurlan

INSERT INTO não funciona

Recommended Posts

Olá Amigos,

 

estou tentando realizar um insert into em minha tabela chamada movimentação, mas o erro que é apresentado é o seguinte:

 

Warning: mssql_query() [function.mssql-query]: message: Line 1: Incorrect syntax near ','. (severity 15) in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 7

 

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 7

 

 

O código usado é o seguinte:

 

$status = 0;

 

$sql_insere = "insert into Movimentacao (idConta,idCategoria,codigo,status,tipo,dataMovimento,dataPagamento,descricao,va

lor) values ($idConta,$idCategoria,'$codigo',$status,'$tipo','$dataMovimento','01/01/1900','$descricao',$valor)";

 

$s_insere = mssql_query($sql_insere);

 

 

-------------------------------------

 

a estrutura da tabela (movimentacao) é a seguinte:

 

[idMovimentacao] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,

[idConta] [numeric](18, 0) NOT NULL ,

[idCategoria] [numeric](18, 0) NOT NULL ,

[codigo] [nvarchar] (20) COLLATE Latin1_General_CI_AS NOT NULL ,

[status] [int] NOT NULL ,

[tipo] [int] NOT NULL ,

[dataMovimento] [datetime] NOT NULL ,

[dataPagamento] [datetime] NULL ,

[descricao] [nvarchar] (1000) COLLATE Latin1_General_CI_AS NULL ,

[valor] [numeric](18, 2) NOT NULL ,

[ipUser] [nvarchar] (12) COLLATE Latin1_General_CI_AS NULL ,

[impressora] [nvarchar] (60) COLLATE Latin1_General_CI_AS NULL ,

[usuario] [nvarchar] (40) COLLATE Latin1_General_CI_AS NULL

 

 

 

----------

 

Onde será que posso estar cometendo o erro???

 

Obrigado desde já!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

em outros campos tb

 

acho q você pode simplificar assim

 

$sql_insere = mysql_query("insert into Movimentacao (idConta,idCategoria,codigo,status,tipo,dataMovimento,dataPagamento,descricao,va

lor) values ('$idConta','$idCategoria','$codigo',$status,'$tipo','$dataMovimento','01/01/1900','$descricao','$valor')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andromeda,

 

eu fiz do seu modo e o erro retornado foi este agora:

 

Warning: mssql_query() [function.mssql-query]: message: Error converting data type varchar to numeric. (severity 16) in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 7

 

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 7

 

 

Obrigado!!!

 

 

 

Nknk,

 

Também fiz do seu modo. O erro que apresenta é o seguinte:

 

Warning: mssql_query() [function.mssql-query]: message: Error converting data type varchar to numeric. (severity 16) in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 5

 

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 5

 

 

Como poderia estar inserindo esta data no INSERT INTO.??

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andromeda,

 

eu fiz do seu modo e o erro retornado foi este agora:

 

Warning: mssql_query() [function.mssql-query]: message: Error converting data type varchar to numeric. (severity 16) in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 7

 

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 7

 

 

Obrigado!!!

 

Olha eu faço assim:

$q_novo = mysql_query("INSERT INTO tabela (valor1, valor2, valo3) VALUES ('$valor1','$valor2','$valor3' )");

acho mais organizado e prático, vê se serve pra você...

 

 

ops, depois que postei observei que está dando problema com a data né??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso mesmo meo,

agora é na data!

Eu não faço a mínima idéia de como tenho que escrever o código para o insert into aceitar minha data.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos,

 

tentei fazer da seguinte forma:

 

$dataPagamento="01/01/1900";

$datamovimento=str_replace("/","-",$dataMovimento);

$datamovimento=substr($datamovimento,0,10);

$datamovimento = explode("-",$datamovimento);

$datamovimento = @$datamovimento[2] . "-" . @$datamovimento[1]. "-" . @$datamovimento[0];

 

$sql_insere = mssql_query("insert into Movimentacao (idConta,idCategoria,codigo,status,tipo,dataMovimento,dataPagamento,descricao,va

lor) values ('$idConta','$idCategoria','$codigo','$status','$tipo','$dataMovimento','$dataPagamento','$descricao',$valor)");

 

-------------

 

 

E o erro que me é retornado mudou para:

 

 

Warning: mssql_query() [function.mssql-query]: message: There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement. (severity 15) in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 10

 

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 10

 

 

---------------

 

Ou seja, diz que o número de colunas apresentadas pelo meu sql difere do número de valores que estou tentando inserir na table.

 

Mas não tenho mais idéia do que pode ser que esteja errado.

 

PS: Já postei a tabela inteira no primeiro post,

 

Obrigado novamente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente colocar a consulta SQL numa string e dê um echo nela, para ver como está sendo gerada.

 

OBS: Por que o campo "valor" está em linhas diferentes na sua consulta? Há uma quebra de linha ali?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia Difurlan, tudo bem contigo?

 

O formato que você estipulou para os campos [dataMovimento] [datetime] e [dataPagamento] [datetime].

Você tem que colocar no formato YYYY/DD/MM HH:MM:SS

tente alterar isso e respeitar os valores de inteiro e caracteres da sua tabela.

 

Tente isso por favor,

 

$dataMovimento = "2008/02/01 09:41:00";
$dataPagamento = "2008/02/02 09:41:00";


$sql_insere = "insert into Movimentacao(idConta, idCategoria, codigo, status, tipo, dataMovimento, dataPagamento, descricao, valor) values ($idConta, $idCategoria, '$codigo', $status, $tipo, '$dataMovimento', '$dataPagamento', '$descricao', $valor)";

$s_insere = mssql_query($sql_insere);

Tabelas abaixos firacaram de fora...

 

[ipUser] [nvarchar] (12) COLLATE Latin1_General_CI_AS NULL ,

[impressora] [nvarchar] (60) COLLATE Latin1_General_CI_AS NULL ,

[usuario] [nvarchar] (40) COLLATE Latin1_General_CI_AS NULL

 

É isso mesmo?

 

Abraços,

Léo

 

ps: poste o que ocorreu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia LeonardoNobre.

Tudo bem sim e com você.

 

Quanto aos campos abaixo, realmente eu havia deixado fora propositalmente, pois não haverá inserção de valores nos mesmos.

 

-------

 

[ipUser] [nvarchar] (12) COLLATE Latin1_General_CI_AS NULL ,

[impressora] [nvarchar] (60) COLLATE Latin1_General_CI_AS NULL ,

[usuario] [nvarchar] (40) COLLATE Latin1_General_CI_AS NULL

 

------

 

Fiz o SQL da forma que voce me forneceu. a Mensagem apresentada é a seguinte:

 

 

Warning: mssql_query() [function.mssql-query]: message: There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement. (severity 15) in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 11

 

Warning: mssql_query() [function.mssql-query]: Query failed in C:\Inetpub\wwwroot\fin\lib_include\insere_no_banco.php on line 11

 

Obs: Eu já tentei colocar os campos que estou deixando de fora, mas também o php retorna o erro.

 

Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente colocar a consulta SQL numa string e dê um echo nela, para ver como está sendo gerada.

 

OBS: Por que o campo "valor" está em linhas diferentes na sua consulta? Há uma quebra de linha ali?

 

Beraldo e Leonardo,

 

Olhem só. Este é o retorno de meu echo no sql:

 

-------

 

insert into Movimentacao(idConta, idCategoria, codigo, status, tipo, dataMovimento, dataPagamento, descricao, valor) values (80, 14, '003355', 0, 2, '2008/02/01 09:41:00', '2008/02/02 09:41:00', 'TESTE', 55,66)

 

-------

 

Percebi que meu campo valor tem duas virgulas, o que pode estar sendo entendido pelo SQL como um campo a mais em minha cláusula.

 

Tenho que trocar a virgula pelo ponto antes de inserir no SQL SERVER.

 

Agradeço desde já sua ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leonardo e Beraldo.

 

Muito obrigado pela paciência de vocês.

 

o SQL funcionou. O problema realmente era na virgula da variável $valor. Ficou assim:

 

$dataMovimento=substr($dataMovimento,0,10);

$dataMovimento = explode("/",$dataMovimento);

$dataMovimento = $dataMovimento[2] . "/" . $dataMovimento[1]. "/" . $dataMovimento[0];

 

$dataPagamento = "1900/01/01";

$valor=str_replace(",",".",$valor);

 

$sql_insere = "insert into Movimentacao(idConta, idCategoria, codigo, status, tipo, dataMovimento, dataPagamento, descricao, valor) values ($idConta, $idCategoria, '$codigo', $status, $tipo, '$dataMovimento', '$dataPagamento', '$descricao', $valor)";

 

echo $sql_insere;

 

$s_insere = mssql_query($sql_insere);

 

 

Precisando, estou à disposição.

 

T+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.