Jump to content
Fabio93

Insert SQL com erro sintaxe

Recommended Posts

Fabio93

Boas ,

Poderiam-me dizer qual e o erro de sintaxe aqui :

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form2")) {
  $insertSQL = sprintf("INSERT INTO repara (cod_forn,nome_forn,morada_forn,contribuinte_forn,telefone,fax,cod_cliente,nome,morada,cod_postal,n_contribuinte,contacto,n_serie, marca, modelo, categoria, avaria, observacoes, descricao, bateria, alimentador, rato, mala, tapete_rato, data, cod_func) VALUES (".$id_forn.",'".$n_forn."','".$morada_forn."',".$contrib_forn.",".$contacto_forn.",".$fax_forn.",".$id.",'".$nome."','".$morada."',".$cod_p.",".$n_contribuinte.",".$contacto.",%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['n_serie'], "int"),
                       GetSQLValueString($_POST['marca'], "text"),
                       GetSQLValueString($_POST['modelo'], "text"),
                       GetSQLValueString($_POST['categ'], "text"),
                       GetSQLValueString($_POST['avaria'], "text"),
                       GetSQLValueString($_POST['observacoes'], "text"),
                       GetSQLValueString($_POST['descricao'], "text"),
                       GetSQLValueString(isset($_POST['bateria']) ? "true" : "", "defined","'Sim'","'Nao'"),
                       GetSQLValueString(isset($_POST['alimentador']) ? "true" : "", "defined","'Sim'","'Nao'"),
                       GetSQLValueString(isset($_POST['rato']) ? "true" : "", "defined","'Sim'","'Nao'"),
                       GetSQLValueString(isset($_POST['mala']) ? "true" : "", "defined","'Sim'","'Nao'"),
                       GetSQLValueString(isset($_POST['tapete']) ? "true" : "", "defined","'Sim'","'Nao'"),
                       GetSQLValueString($_POST['data'], "text"),
                       GetSQLValueString($_POST['cod_func'], "text"));
				   
				   echo $insertSQL;

  mysql_select_db($database_liga_bd, $liga_bd);
  $Result1 = mysql_query($insertSQL, $liga_bd) or die(mysql_error());

  $insertGoTo = "final.php";
  if (isset($_SERVER['QUERY_STRING'])) {
    $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    $insertGoTo .= $_SERVER['QUERY_STRING'];
  }
  header(sprintf("Location: %s", $insertGoTo));
}

e echo o insert da isto :

INSERT INTO repara (cod_forn,nome_forn,morada_forn,contribuinte_forn,telefone,fax,cod_cliente,nome,morada,cod_postal,n_contribuinte,contacto,n_serie, marca, modelo, categoria, avaria, observacoes, descricao, bateria, alimentador, rato, mala, tapete_rato, data, cod_func) VALUES (8,'cibern�tica','Rua da encosta n� 120 4795-614 Vila de negrelos Santo tirso',201313294,919563887,'.212472926.',,'','',,,,124456, 'Acer', 'aspire 5720', 'Portatil', 'teclado', 'falta a tecla', 'numero 3', 'Sim', 'Sim', 'Nao', 'Sim', 'Nao', '07-06-2011', 'Fabio93')

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 ''','',,,,124456, 'Acer', 'aspire 5720', 'Portatil', 'teclado', 'falta a tecla', ' at line 1

Share this post


Link to post
Share on other sites
bLACKLOTUS90

Quando inseres alguma coisa para o SQL, não precisas de meter todos os campos da tabela... tira as ",," ;)

Exemplo:

Tabela_1:

id int,

nome varchar(20),

exemplo varchar(20)

SQL: INSERT INTO tabela_1(nome) VALUES ('YOH')


# Catholic programmingif(!defined('GOD')) die();

Share this post


Link to post
Share on other sites
brunoais

O que é que é a função:

GetSQLValueString() ?

Não seria melhor se não a usasses? E já agora. É pior usar o sprintf do que a concatenação de strings (testes feitos no meu servidor).

Outra coisa. Como é que é suposto essa parte funcionar?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Fabio93

GetSQLValueString() -- obtem o valor da variavel em questao.

Epa ate era melhor nao a usar , mas tou a fazer no dreamweaver para ser mais rapido.

E suposto iserir na BD informaçao de 3 forms diferentes , que estao na mesma pagina, tudo numa so tabela.

Share this post


Link to post
Share on other sites
brunoais

GetSQLValueString() -- obtem o valor da variavel em questao.

Isso é redundante, não?

Para obteres o valor da variável $array['nome'] basta fazeres $array['nome'];...

Epa ate era melhor nao a usar , mas tou a fazer no dreamweaver para ser mais rapido.

E suposto iserir na BD informaçao de 3 forms diferentes , que estao na mesma pagina, tudo numa so tabela.

Programas... Só "desajudam" e criam código demasiado ineficiente.

Tira quilo tudo q tem as ,,! Só serve para criar uma intaxe errada. Usa só o que precisas.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Fabio93

Olha Bruno , poderias dizer-me como funcionam as check box's , no insert record ?

Tipo e que teem dois valores ou 'sim' se tiver checked ou 'Nao' se tiver unchecked.

Como e que eu faço a inserçao, podes dar-me um ajudita aí sff ?

Obrigado.

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Para verificares se um checkbox foi checkado ou não, usas a função isset().

<?php

if( isset( $_POST['campo'] ) ) {

echo 'Checked';

}

?>

Quanto à tua função GetSQLValueString, pareceu-me que a estavas a utilizar para validar os tipos e afins.

O melhor é utilizares PDO onde é possível usar parâmetros. Se quiseres, tens aqui um tutorial de como seleccionar, inserir, editar e eliminar dados utilizando PDO.

Share this post


Link to post
Share on other sites
Fabio93

Muito obrigado.

Vou começar a usar esse metodo em projectos futuros, mas este vou acabalo assim.

Podes explicar melhor sff como uso isso dentro de um insert ?

Quero que ele checked insira o valor 'Sim' e unchecked valor 'Nao'

Obrigado pela atençao ;)

Share this post


Link to post
Share on other sites
Lfscoutinho

Boas,

Atribuis o valor a uma variável, por exemplo:

$checkbox = isset( $_POST['campo'] ) ? 'Sim' : 'Não';

Depois na instrução SQL colocas a variavel $checkbox.

Share this post


Link to post
Share on other sites
Fabio93

<?php  

					$checkbox1 = isset( $_POST['bateria'] ) ? 'Sim' : 'Não';
					$checkbox2 = isset( $_POST['alimentador'] ) ? 'Sim' : 'Não';
					$checkbox3 = isset( $_POST['rato'] ) ? 'Sim' : 'Não';
					$checkbox4 = isset( $_POST['mala'] ) ? 'Sim' : 'Não';
					$checkbox5 = isset( $_POST['tapete'] ) ? 'Sim' : 'Não';

					mysql_select_db($database_liga_bd ,$liga_bd);

					$sqlInsert = "INSERT INTO repara (cor_forn,nome_forn,morada_forn,contribuinte_forn,telefone,fax,cod_cliente,nome,morada,cod_postal,n_contribuinte,contacto,n_serie,marca,modelo,categoria,avaria,observacoes,descricao,bateria,alimentador,rato,mala,tapete_rato,data,cod_fun,cod_reparacao) VALUES (".$id_forn.",'".$n_forn."','".$morada_forn."',".$contrib_forn.",".$contacto_forn.",".$fax_forn.",".$id.",'".$nome."','".$morada."',".$cod_p.",".$n_contribuinte.",".$contacto.",".$_POST['n_serie'].",'".$_POST['marca']."','".$_POST['modelo']."','".$_POST['categ']."','".$_POST['avaria']."','".$_POST['observacoes']."','".$_POST['descricao']."','".$checkbox1."','".$checkbox2."','".$checkbox3."','".$checkbox4."','".$checkbox5."','".$_SESSION['MM_Username']."')";

					echo $sqlInsert;
					$result = mysql_query($sqlInsert, $liga_bd) or die(mysql_error());

					?>

Podem dizer o que estou a fazer mal aí ?

O echo disso e :

INSERT INTO repara (cor_forn,nome_forn,morada_forn,contribuinte_forn,telefone,fax,cod_cliente,nome,morada,cod_postal,n_contribuinte,contacto,n_serie,marca,modelo,categoria,avaria,observacoes,descricao,bateria,alimentador,rato,mala,tapete_rato,data,cod_fun,cod_reparacao) VALUES (8,'cibern�tica','Rua da encosta n� 120 4795-614 Vila de negrelos Santo tirso',201313294,919563887,212472926,,'','',,,,,'','','','','','','Não','Não','Não','Não','Não','Fabio93')

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 ''','',,,,,'','','','','','','Não','Não','Não','Não','Não','Fabio93')' at line 1

Obrigado.

Share this post


Link to post
Share on other sites
ribeiro55

Tens 25 values para 27 colunas.

Estranho o erro não ser outro.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Share this post


Link to post
Share on other sites
Fabio93

<?php  

					$checkbox1 = isset( $_POST['bateria'] ) ? 'Sim' : 'Não';
					$checkbox2 = isset( $_POST['alimentador'] ) ? 'Sim' : 'Não';
					$checkbox3 = isset( $_POST['rato'] ) ? 'Sim' : 'Não';
					$checkbox4 = isset( $_POST['mala'] ) ? 'Sim' : 'Não';
					$checkbox5 = isset( $_POST['tapete'] ) ? 'Sim' : 'Não';

					mysql_select_db($database_liga_bd ,$liga_bd);

					$sqlInsert = "INSERT INTO repara (cor_forn,nome_forn,morada_forn,contribuinte_forn,telefone,fax,cod_cliente,nome,morada,cod_postal,n_contribuinte,contacto,n_serie,marca,modelo,categoria,avaria,observacoes,descricao,bateria,alimentador,rato,mala,tapete_rato,data,cod_fun,cod_reparacao) VALUES (".$id_forn.",'".$n_forn."','".$morada_forn."',".$contrib_forn.",".$contacto_forn.",".$fax_forn.",".$id.",'".$nome."','".$morada."',".$cod_p.",".$n_contribuinte.",".$contacto.",".$_POST['n_serie'].",'".$_POST['marca']."','".$_POST['modelo']."','".$_POST['categ']."','".$_POST['avaria']."','".$_POST['observacoes']."','".$_POST['descricao']."','".$checkbox1."','".$checkbox2."','".$checkbox3."','".$checkbox4."','".$checkbox5."','".$data."','".$_SESSION['MM_Username']."')";

Acrescentei o campo que faltava '".$data."' e ainda da igual, o mesmo erro.

Share this post


Link to post
Share on other sites
brunoais

a var $id está vazia bem como várias outras a seguir a ela.

Ele está a dar erro no $id pq é o 1ª falhar.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Fabio93

Pois porque num dos forms tem uma combobox e essas var's so teem valor depois de ser selecionado la um valor .

Mesmo depois disso , vai para a proxima pagina , mas continua a nao inserir e na pagina destino aparece :

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 '' at line 1

:s

Share this post


Link to post
Share on other sites
tiagoamaros

Boas...

Só uma pergunta na 3ª linha era suposto ser mesmo ".="  ???

Abraço  :cheesygrin:

Share this post


Link to post
Share on other sites
brunoais

Pois porque num dos forms tem uma combobox e essas var's so teem valor depois de ser selecionado la um valor .

Mesmo depois disso , vai para a proxima pagina , mas continua a nao inserir e na pagina destino aparece :

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 '' at line 1

:s

Isso deve significar falta de valores


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
tiagoamaros

$editFormAction = $_SERVER['PHP_SELF'];

if (isset($_SERVER['QUERY_STRING'])) {

  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);

}                          ^                                           

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.