Ir ao conteúdo
  • Cadastre-se
Insurgent3

PHP Comando INSERT INTO grava somente a primeira informação em LAÇO while no MySQL

Recommended Posts

Olá,

 

Eu tenho um código que insere dados no banco de dados usando um WHILE. A listagem dos dados a inserir está certinha, pois conferi com o "echo". Porém o laço somente insere os dados da primeira contagem do laço. Não sei o porque. E ele está gerando um ID auto incremetado (e chave primária) com os valores 101,201,301,401 a cada teste que faço, sendo que era para gerar 1,2,3,4...

 

Alguém tem ideia do que pode estar acontecendo?

 

Segue o códido:

 

// Grava a nova cidade no banco de dados
	  $exe_queryFundarPrimeiraCidade = mysqli_query($conexao,$sql_queryFundarPrimeiraCidade) or die("Falha inserindo gravando nova cidade. Erro: ".mysqli_error($conexao));
	  // Seleciona o ID recem gravado da nova cidade
	  $sql_retornoIdFundarPrimeiraCidade = "SELECT LAST_INSERT_ID()";
	  $exe_retornoIdFundarPrimeiraCidade = mysqli_query($conexao,$sql_retornoIdFundarPrimeiraCidade); // Retorna o ID da query acima(Primeira cidade fundada e inserida no banco de dados)
	  $idPrimeiraCidade = mysqli_fetch_array($exe_retornoIdFundarPrimeiraCidade);
	  $idPrimeiraCidadeVar = $idPrimeiraCidade[0];
	  //echo "Id da cidade gerada: " . @ID;
	  
	  for($x=1;$x<=10;$x++)
	  {
		  for($y=1;$y<=10;$y++)
		  {
			 echo "<br><br><br>";
			 echo "ID da Cidade: ".$idPrimeiraCidadeVar;
			 echo "<br>Pos X: " .$x;
			 echo "<br>Pos Y: 	" .$y;
			 $terrenoGerado = rand(1,11);
			 echo "<br>Tipo do terreno: ". $terrenoGerado; 
			 
			 $sql_geraMapaNovaCidade = "INSERT INTO mapacidade(idCidade,posX,posY,tipoTerreno) VALUES('$idPrimeiraCidadeVar','$x','$y','$terrenoGerado')";
			 $exe_geraMapaNovaCidade = mysqli_query($conexao,$sql_geraMapaNovaCidade);	
		  }  
	  }

 

Nesta parte do código ele insere os dados e está inserindo somente o conteúdo do primeiro laço:

 

$sql_geraMapaNovaCidade = "INSERT INTO mapacidade(idCidade,posX,posY,tipoTerreno) VALUES('$idPrimeiraCidadeVar','$x','$y','$terrenoGerado')";

$exe_geraMapaNovaCidade = mysqli_query($conexao,$sql_geraMapaNovaCidade);	

 

Pensei em ter algum campo errado, como a chave primária não estar bem definida ou sem o "auto increment" implementado, mas está tudo definido e implementado, creio eu, corretamente.

 

 

Obrigado.

 

 

=== EDIT ===

 

Consegui resolver. Estava tendo problemas com a chave estrangeira da tabela "cidades". Deletei a chave estrangeira e adicionei uma nova com o comando:

 


ALTER TABLE 'mapacidade' ADD CONSTRAINT `fk_cidadePertencente` FOREIGN KEY ( `idCidade` ) REFERENCES `cidades` ( `cidadeId` );

 

Resolveu.

 


Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×