Ir para conteúdo

POWERED BY:

Arquivado

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

Ringeril

[Resolvido] Erro no insert

Recommended Posts

Boas,

 

Estou fazendo esse insert, grande insert, mas o que acontece é o seguinte erro:

 

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 'for, des, agi, hab, atq1, atq2, atq3, atq4, usuario2, poke12, ' at line 12

Já revisei o insert e não encontrei o erro, então venho pedir uma ajuda a vocês.

 

$sql = mysql_query("INSERT INTO desafio (
usuario, 
poke1, 
poke2, 
poke3, 
poke4, 
poke5, 
poke6, 
level, 
vida, 
vidat, 
for, 
des, 
agi, 
hab, 
atq1, 
atq2, 
atq3, 
atq4, 
usuario2, 
poke12, 
poke22, 
poke32, 
poke42, 
poke52, 
poke62, 
level2, 
vida2, 
vidat2, 
for2, 
des2, 
agi2, 
hab2, 
atq12, 
atq22, 
atq32, 
atq42) 
VALUES(
'{$user}', 
'{$pid1}', 
'{$pid2}', 
'{$pid3}', 
'{$pid4}', 
'{$pid5}', 
'{$pid6}', 
'{$plv1}', 
'{$pvi1}', 
'{$pvit1}', 
'{$pfor}', 
'{$pdes}', 
'{$pagi}', 
'{$phab}', 
'{$patq1}', 
'{$patq2}', 
'{$patq3}', 
'{$patq4}', 
'{$userdes}', 
'{$pid12}', 
'{$pid22}', 
'{$pid32}', 
'{$pid42}', 
'{$pid52}', 
'{$pid62}', 
'{$plv12}', 
'{$pvi12}', 
'{$pvit12}', 
'{$pfor2}', 
'{$pdes2}', 
'{$pagi2}', 
'{$phab2}', 
'{$patq12}', 
'{$patq22}', 
'{$patq32}', 
'{$patq42}')
") or die( mysql_error() );

Abraço!

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

~TiuTalk~

Fiz o que você disse e me retornou esse erro:

 

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 ''desafio' ( 'usuario', 'poke1', 'poke2', 'poke3', 'poke4', 'poke5', ' at line 1

$sql = mysql_query("INSERT INTO 'desafio' (
'usuario', 
'poke1', 
'poke2', 
'poke3', 
'poke4', 
'poke5', 
'poke6', 
'level', 
'vida', 
'vidat', 
'for', 
'des', 
'agi', 
'hab', 
'atq1', 
'atq2', 
'atq3', 
'atq4', 
'usuario2', 
'poke12', 
'poke22', 
'poke32', 
'poke42', 
'poke52', 
'poke62', 
'level2', 
'vida2', 
'vidat2', 
'for2', 
'des2', 
'agi2', 
'hab2', 
'atq12', 
'atq22', 
'atq32', 
'atq42') 
VALUES(
'{$user}', 
'{$pid1}', 
'{$pid2}', 
'{$pid3}', 
'{$pid4}', 
'{$pid5}', 
'{$pid6}', 
'{$plv1}', 
'{$pvi1}', 
'{$pvit1}', 
'{$pfor}', 
'{$pdes}', 
'{$pagi}', 
'{$phab}', 
'{$patq1}', 
'{$patq2}', 
'{$patq3}', 
'{$patq4}', 
'{$userdes}', 
'{$pid12}', 
'{$pid22}', 
'{$pid32}', 
'{$pid42}', 
'{$pid52}', 
'{$pid62}', 
'{$plv12}', 
'{$pvi12}', 
'{$pvit12}', 
'{$pfor2}', 
'{$pdes2}', 
'{$pagi2}', 
'{$phab2}', 
'{$patq12}', 
'{$patq22}', 
'{$patq32}', 
'{$patq42}')
") or die( mysql_error() );

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro é a aspa no nome da tabela:

INSERT INTO 'desafio'
deixe sem, assim

INSERT INTO desafio
Movido: PHP=>MySQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio Leandro

Tirei as aspas do nome da tabela e recebi esse erro:

 

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 ''usuario', 'poke1', 'poke2', 'poke3', 'poke4', 'poke5', 'poke6', '' at line 2

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

primeiro....

'for' eh palavra reservada pra ser usada tem q usar o plic deitado (``)

 

segundo...

você nao precisa colocar os campos durante o insert desde q exista a mesma qtde de valores sendo inserida

 

exemplo:

INSERT INTO desafio

VALUES(

'{$user}',

'{$pid1}',

'{$pid2}',

'{$pid3}',

'{$pid4}',

'{$pid5}',

'{$pid6}',

'{$plv1}',

'{$pvi1}',

'{$pvit1}',

'{$pfor}',

'{$pdes}',

'{$pagi}',

'{$phab}',

'{$patq1}',

'{$patq2}',

'{$patq3}',

'{$patq4}',

'{$userdes}',

'{$pid12}',

'{$pid22}',

'{$pid32}',

'{$pid42}',

'{$pid52}',

'{$pid62}',

'{$plv12}',

'{$pvi12}',

'{$pvit12}',

'{$pfor2}',

'{$pdes2}',

'{$pagi2}',

'{$phab2}',

'{$patq12}',

'{$patq22}',

'{$patq32}',

'{$patq42}'

 

terceiro...

fica bem melhor usar a sintaxe do update para fazer inserts grandes

 

exemplo:

INSERT INTO tabela

set

campo_a = '$a',

campo_b = '$b',

campo_c = '$c',

 

 

quarto....

nao sou craque em php, mas pq as variaveis estao entre chaves ( {} ) ?

 

espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

giesta

Colocando a string entre chaves todo o seu interior é preservado.

Na verdade nunca me preocupei com isso.

 

Vou tentar fazes o que disse.

 

Abraço.

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

 

Coloquei da maneira dita e recebi esse erro:

Column count doesn't match value count at row 1

Depois coloquei uma aspas simples vazia '' ,pelo campo id autoincrement, e recebi esse erro:

Incorrect integer value: '' for column 'id' at row 1

Foi feito dessa maneira:

$sql = mysql_query("INSERT INTO desafio 
VALUES(
'',
'{$user}', 
'{$pid1}', 
'{$pid2}', 
'{$pid3}', 
'{$pid4}', 
'{$pid5}', 
'{$pid6}', 
'{$plv1}', 
'{$pvi1}', 
'{$pvit1}', 
'{$pfor}', 
'{$pdes}', 
'{$pagi}', 
'{$phab}', 
'{$patq1}', 
'{$patq2}', 
'{$patq3}', 
'{$patq4}', 
'{$userdes}', 
'{$pid12}', 
'{$pid22}', 
'{$pid32}', 
'{$pid42}', 
'{$pid52}', 
'{$pid62}', 
'{$plv12}', 
'{$pvi12}', 
'{$pvit12}', 
'{$pfor2}', 
'{$pdes2}', 
'{$pagi2}', 
'{$phab2}', 
'{$patq12}', 
'{$patq22}', 
'{$patq32}', 
'{$patq42}')
") or die( mysql_error() );

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra resolver sua situação você só precisa pegar a primeira consulta q você postou e por `` na coluna for pois for eh palavra reservada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz isso aqui:

$data = mysql_query("SELECT MAX(id) AS id FROM desafio");
$row = mysql_fetch_array($data);

$iddes = $row[id]+1;

E adicionei no insert:

$sql = mysql_query("INSERT INTO desafio 
VALUES(
'{$iddes}',
'{$user}', 
'{$pid1}', 
'{$pid2}', 
........

Agora fez o insert certinho.

 

Obrigado a todos.

~TiuTalk~

Marcio Leandro

giesta

 

Abraço!

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.