Ir para conteúdo

Arquivado

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

marcelobbt

Serialize e Unserialize

Recommended Posts

Estava tentando usar a função serialize para gravar um vetor no bd e depois poder le-lo. tentei fazer um exemplo simples, mas não está funcionando. Alguém pode me dar uma ajuda? Segue código abaixo.

 

<?php
	include '../config_bd.php';
	$missoes = array (1, 2);
	$query = mysql_query("select * from Personagens_dados where ID = '2'");
	$sql = mysql_fetch_array($query) or die (mysql_error());
	$sql = serialize("INSERT INTO personagens_dados (Missaorealizada) values ('$missoes')");
	
	$query = mysql_query("select * from Personagens_dados where ID = '2'");
	$sql = mysql_fetch_array($query) or die (mysql_error());
	$missaorealizada =  unserialize ($sql['Missaorealizada']);
	
	echo $missaorealizada;

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

não entendi isso:

$sql = serialize("INSERT INTO personagens_dados (Missaorealizada) values ('$missoes')");

você quer serializar esta query para armazena-la no banco ou está tentando serializar o insert no banco?

 

ou ainda melhor, quer serializar o valor que está na variável $missoes?

 

não entendi por que está fazendo 2 consultas no banco e com as mesmas variáveis?

Compartilhar este post


Link para o post
Compartilhar em outros sites

para você serializar o array teria que fazer algo parecido com isto:

$missoes = serialize(array(1, 2));

$sql = mysql_query("INSERT INTO personagens_dados (Missaorealizada) values ('$missoes')");

ou

$sql = mysql_query("INSERT INTO personagens_dados (Missaorealizada) values ('".serialize($missoes)."')");

do modo que está fazendo, está serializando a string $sql ao invéz de esta inserindo no db. entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Peço desculpas aos que tentaram me ajudar, mas como sou novato, as vezes acabo fazendo umas besteiras. Tentei dar uma melhorada no código, mas continuo com problemas para gravar.

 

Vejam novo código abaixo:

 

<?php
	include '../config_bd.php';
	$missoes = array (1, 2, 3);
	$missoesbd = serialize ($missoes);
	$query = mysql_query("select * from personagens_dados where ID = '1'") or die(mysql_error());
	$sql = mysql_fetch_array($query) or die(mysql_error());
	$sql = ("INSERT INTO personagens_dados (Missoesrealizadas) values ('$missoesbd')");
	
	$query2 = mysql_query("select * from personagens_dados where ID = '1'");
	$sql2 = mysql_fetch_array($query2) or die(mysql_error());
	$missoesrealizadas = unserialize($sql2['Missoesrealizadas']);
	$i=0;
	while ($i < 3) { //apenas para testar o resultado
		echo $missoesrealizadas[$i],"/",$missoes[$i],"<br>";
		$i += 1;
	}
?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de umas pesquisas na internet consegui resolver.

 

Segue o resultado:

 

<?php
	include '../config_bd.php';
	$missoes = array (1, 2, 3);
	$missoesbd = serialize ($missoes);
	$query = mysql_query("UPDATE personagens_dados SET Missoesrealizadas='$missoesbd' WHERE ID=1") or die(mysql_error());
	
	$query2 = mysql_query("select * from personagens_dados where ID = '1'");
	$sql2 = mysql_fetch_array($query2) or die(mysql_error());
	$missoesrealizadas = unserialize($sql2['Missoesrealizadas']);
	$i=0;
	$missaorealizada = unserialize($missoesbd);
	while ($i < 3) { //apenas para testar o resultado
		echo $missaorealizada[$i],"<br>";
		$i += 1;
	}

?>

 

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.