Ir para conteúdo

POWERED BY:

Arquivado

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

Hugo Borges_120734

erro no INSERT no mysql após atualização

Recommended Posts

Galera tenho um pequeno sistema que roda com php e mysql.

 

Hj fiz a atualização do meu mysql para uma nova versão, e o INSERT parou de funcionar, não e exibido erro algum. Apenas não adiciona mais no banco de dados. O SELECT esta tudo ok.

 

Segue um exemplo simples do que funcionava.

<?php

$Server_site = '127.0.0.1';
$Server_bd = '127.0.0.1';
$Login_admin = 'root';
$Senha_admin = 'machugo';
$porta_bd_hs = '3306';
$db = 'teste';


// Conecta paginas a DB
if(!($conexao = @mysql_connect("$Server_bd:$porta_bd_hs", $Login_admin, $Senha_admin))){"erro"}
if(!($bd=mysql_select_db($db,$conexao))) {"erro"}


$acesso = mysql_query ("INSERT INTO acessos VALUES ('','1', '','', '')",$conexao);

?>

Alguém pode me ajudar? pois não sei o que pode ser.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

ola houve uma atualizacao e so subistituir algumas coisas


$Server_site = '127.0.0.1';
$Server_bd = '127.0.0.1';
$Login_admin = 'root';
$Senha_admin = 'machugo';
$porta_bd_hs = '3306';
$db = 'teste';


// Conecta paginas a DB
if(!($conexao = mysql_connect($Server_site, $Login_admin, $Senha_admin) or die(mysql_error())))
if(!(($db,$conexao))) {"erro"}


$acesso = mysql_query ("INSERT INTO acessos VALUES ('','1', '','', '')");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de descobrir o problema, porem não sei como resolver.

 

O que acontece e que todas as minhas tabelas tem uma chave primaria, chamada ID. Quando faço o insert eu tenho que informar o valor. sendo que no mysql 5.5 era gerado automáticamente.

 

Aff se for isso mesmo ai ficou ruim viu. Alguém sabe como resolver isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai na tabela e coloca esse campo como AUTO_INCREMENT

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabei de descobrir o problema, porem não sei como resolver.

 

O que acontece e que todas as minhas tabelas tem uma chave primaria, chamada ID. Quando faço o insert eu tenho que informar o valor. sendo que no mysql 5.5 era gerado automáticamente.

 

Aff se for isso mesmo ai ficou ruim viu. Alguém sabe como resolver isso?

Se a sua Primary Key tiver sido criada com Auto_Increment, não há porque você precisar informar o valor do Id (no seu caso).

Compartilhar este post


Link para o post
Compartilhar em outros sites
Hugo, veja se usando esse exemplo funciona, fiz umas alterações


$host = 'localhost';

$user = 'root';

$pass = '';

$db = 'test';



// Conecta paginas a DB

if(!($con = mysql_connect($host, $user, $pass) or die(mysql_error())));

mysql_select_db($db, $con);


$query = "INSERT INTO acessos VALUES ('','','1', '','', '')";


$dados = mysql_query($query,$con) or die(mysql_error());


mysql_close($con); //encerra a conexao com o banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah como lembraram acima é bom ter um campo auto_incremente para gerar os ID

 

Estrutura da tabela que usei

 

CREATE TABLE IF NOT EXISTS `acessos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`campo1` int(11) NOT NULL,
`campo2` int(11) NOT NULL,
`campo3` int(11) NOT NULL,
`campo4` int(11) NOT NULL,
`campo5` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Compartilhar este post


Link para o post
Compartilhar em outros sites

GUCAMARDO, não deu certo, olha o erro:

 

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

 

NoService, a tabela ja esta com AUTO_INCREMENT.

 

 

Olha usando o mesmo código que estava antes funciona, dês de que eu informe o ID sendo que ja é AUTO_INCREMENT.

$Server_bd = '127.0.0.1';
$Login_admin = 'root';
$Senha_admin = 'machugo';
$porta_bd_hs = '3306';
$db = 'TESTE';


// Conecta paginas a DB
if(!($conexao = @mysql_connect("$Server_bd:$porta_bd_hs", $Login_admin, $Senha_admin))){echo "erro";}
if(!($bd=mysql_select_db($db,$conexao))) {echo "erro";}


$acesso = mysql_query ("INSERT INTO acessos VALUES ('4','1', NULL, NULL, NULL, 'DEDW')",$conexao);

Alguém sabe o porque disso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dando uma olhada no manual descobri que da versão 5.6 em diante basta vc colocar o valor 0 na auto_increment, que o próprio mysql gera o id novamente.

 

A unica alteração e o 0:

$acesso = mysql_query ("INSERT INTO acessos VALUES ('0','', '', '', '', 'teste')",$conexao);

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.