Difurlan 0 Denunciar post Postado Janeiro 31, 2008 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
Isabelle_Andrade 0 Denunciar post Postado Janeiro 31, 2008 não está faltando aspas simples em "$idConta,$idCategoria," dentro de values? Compartilhar este post Link para o post Compartilhar em outros sites
nknk 3 Denunciar post Postado Janeiro 31, 2008 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
Difurlan 0 Denunciar post Postado Janeiro 31, 2008 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
Isabelle_Andrade 0 Denunciar post Postado Janeiro 31, 2008 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
Difurlan 0 Denunciar post Postado Janeiro 31, 2008 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
Beraldo 864 Denunciar post Postado Janeiro 31, 2008 Não uso SQL Server, mas geralmente datas devem estar neste formato: YYYY-MM-DD. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Isabelle_Andrade 0 Denunciar post Postado Janeiro 31, 2008 Não uso SQL Server, mas geralmente datas devem estar neste formato: YYYY-MM-DD. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif é cara tentar botar assim e vê se vai... Compartilhar este post Link para o post Compartilhar em outros sites
Difurlan 0 Denunciar post Postado Fevereiro 1, 2008 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
Beraldo 864 Denunciar post Postado Fevereiro 1, 2008 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
leonardonobre 0 Denunciar post Postado Fevereiro 1, 2008 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
Difurlan 0 Denunciar post Postado Fevereiro 1, 2008 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
leonardonobre 0 Denunciar post Postado Fevereiro 1, 2008 Oi Difurlan, dá um echo $sql_insere para ver o que ele mostra, por favor. Abraços, léo Compartilhar este post Link para o post Compartilhar em outros sites
Difurlan 0 Denunciar post Postado Fevereiro 1, 2008 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
leonardonobre 0 Denunciar post Postado Fevereiro 1, 2008 Oi Difurlan, o padrão para moeda é ponto ".". Tente mudar a virgula para ponto. Abraços, léo Compartilhar este post Link para o post Compartilhar em outros sites
Difurlan 0 Denunciar post Postado Fevereiro 1, 2008 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