Ir para conteúdo

Arquivado

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

ahsc

[Resolvido] Problemas na inserção do banco de dados com aspas ("&#

Recommended Posts

Olá a todos. Tenho uma classe, peguei na net e é muito boa por sinal, que tem um método para inserção de banco de dados. Utilizo ela há algum tempo e até o presente momento não havia erro com ela. Agora eu tenho um problema de inserção de conteúdo no banco de dados quando eu tenho alguma aspa no meio do texto. Ela pode ser tanto simples quanto dupla que dá erro. Esse é o método.

 

function insere($tabela, $dados)
		{
                /*
                        Função para executar uma inserção em uma tabela no mysql.
                        Crie um array como a seguir contendo os campos e os seus
                        respectivos valores.
                                $dados=array(
                           "Campo1" => "Valor1",
                           "Campo2" => "Valor2",
                           "Campo3" => "Valor3");
                        Em seguida passe como parametro a tabela e o array com os dados
                        para executar a inserção.
                                $con->insere(\'Tabela1\', $dados);
                */
                $arrcampos=array_keys($dados);
                $arrvalores=array_values($dados);
                $numcampos=count($arrcampos);
                $numvalores=count($arrvalores);
                if($numcampos == $numvalores)
				{
                      	$sql="INSERT INTO $tabela (";
												   
                        foreach($arrcampos as $campo)
						{
                               $sql.="$campo,";
                        }
                       		$sql=substr_replace($sql,")",-1,1);//tirando a ultima virgula
                      		$sql.=" VALUES(";
                        foreach($arrvalores as $valor)
						{
                             $sql.='"'.$valor.'",';
                        }
						
                      		$sql=substr_replace($sql,")",-1,1);//tirando a ultima virgula
						
						
						
                }
				
				else
				{
                        echo "<div style='margin-top:35%; text-align:center'>Erro ao checar número de campos e valores.\n<br />
		<a href=javascript:history.back(1)>voltar</a></div>";
						exit();
                }
                $this->query=$sql;
                $this->sqlExec();
				//print "dados inseridos com sucesso.";
        }


        }

 

e aqui a chamada do método:

 


//define objetos (campos de input)
		$organizar		= new Cadastros($_POST['organizar']);
		$nivel 			= new Cadastros($_POST['nivel']);
		$titulo			= new Cadastros($_POST['titulo']);
		$resumo			= new Cadastros($_POST['resumo']);
		$sobre			= new Cadastros($_POST['sobre']);
		$noticia 		= new Cadastros($_POST['noticia']);
		$posicao		= new Cadastros($_POST['posicao']);
		$leiaMais		= "leia mais";
		$data			= date("Y-m-d");
		$arquivo	 	= new Cadastros($_FILES['userfile']['name']);

$dados3 = array(
   			"nivel" 	=> "".$nivel->getNomeCampo()."",
			"sobre" 	=> "".$sobre->getNomeCampo()."",
			"titulo" 	=> "".$titulo->getNomeCampo()."",
			"resumo"	=> "".$resumo->getNomeCampo()."",
			"dia"		=> "".$data."",
			"leiaMais"	=> "".$leiaMais."",
			"noticia"	=> "".$noticia->getNomeCampo().""
		);
		
		//recupera o último id inserido
		$con3->insereNoticia('noticias', $dados3);

O problema está na hora em que o usuário vai inserir uma notícia e nessa notícia tem ""(aspas duplas ou simples) gera erro na inserção no bd. Já tentei de várias formas e até agora não consegui. alguém tem idéia de como posso resolver isso?

 

obrigado a quem puder me ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha o erro que deu

 

Erro ao executar query. 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 'dispara: \'Não vão tirar esse título do São Paulo na mão grande\',Vice de futebo' at line 1

 

Depois de:

$noticia                = new Cadastros($_POST['noticia']);
Coloque:

$noticia = addslashes($noticia);
A função addslashes() escapa as aspas existentes na string.

 

Sim, já tentei isso mais não rolou tb.

Já tento coloca \ na frente da aspa?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Verifique se o servidor está com magic_quotes "on" ou "off"...

 

se estiver on, você nao precisa usar addslashes, pq o magic_quotes faz isso p você...

 

se estiver off, use addslashes...

 

espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro ao executar query. 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 'dispara: \"Não vão tirar esse título do São Paulo na mão grande\",Vice de futebo' at line 1

 

erro apresentando. Tô ficando loko com isso. O problema é que não dá para por nem aspas simples nem dupla.

 

tá difícil isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz, finalmente funfou. Foi com addslashes mesmo. Vwl pela força.

 

Depois de:

$noticia                = new Cadastros($_POST['noticia']);
Coloque:

$noticia = addslashes($noticia);
A função addslashes() escapa as aspas existentes na string.

 

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.