Problema com caracteres especias no insert
Sou iniciante, peguei um cod pronto e mudei poucas coisas, bem simples msm é só pra mim aprender PDO porque parece que na versão 7 do PHP não vai estar mais em uso as funções mysql_(). O problema é que quando envio algum dado para o banco com caractere especial ele não armazena corretamente, exemplo: Se eu envio o campo nome = "José" ele guarda "José" ou então nome = "Beraldão" ele guarda "Beraldão". Aqui está os cods:
Obs: já tentei mudar o charset no phpmyadmin e no próprio cod e nada deu certo. (Uso o xampp se isso ajuda).
index.php
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Strict//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd”>
<html>
<head>
<title>Teste PHP/PDO</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<form method="GET" action="pesquisa.php">
<input type="text" id="nome" name="nome" size="15">
<br/>
<input type="submit" value="Pesquisar">
</form>
</body>
</html>
pesquisa.php
<?php
include_once('conexao.php');
header('Content-Type: text/html; charset=utf-8');
/* SELECT */
/*
$nome = '%'.$_GET['nome'].'%';
try {
$sql = "SELECT * FROM `programadores` WHERE `nome` LIKE :nome;";
$stm = $PDO->prepare( $sql );
$stm->bindParam( ':nome' , $nome , PDO::PARAM_STR );
if ( $stm->execute() ) {
foreach ( $stm->fetchAll( PDO::FETCH_OBJ ) as $usuario ) {
echo 'Nome: ' , $usuario->nome , PHP_EOL .'<br/>';
echo 'Site: ' , $usuario->site , PHP_EOL .'<br/>';
//...
}
}
} catch ( PDOException $e ) {
var_dump( $e->getMessage() );
}
*/
/ INSERT /
$nome = $_GET['nome'];
$site = 'http://microsoft.com';
$sql = "INSERT INTO programadores(nome, site) VALUES(:nome, :site)";
$stm = $PDO->prepare( $sql );
$stm->bindParam( ':nome', $nome );
$stm->bindParam( ':site', $site );
$result = $stm->execute();
if ( ! $result )
{
var_dump( $stm->errorInfo() );
exit;
}
echo $stm->rowCount() . " linhas inseridas.";
?>
conexao.php (funciona sem problemas)
<?php
define( 'MYSQL_HOST', 'localhost' );
define( 'MYSQL_USER', 'root' );
define( 'MYSQL_PASSWORD', '' );
define( 'MYSQL_DB_NAME', 'teste' );
try {
$PDO = new PDO( 'mysql:host=' . MYSQL_HOST . ';dbname=' . MYSQL_DB_NAME, MYSQL_USER, MYSQL_PASSWORD );
$PDO->setAttribute( PDO::ATTR_ERRMODE , PDO::ERRMODE_EXCEPTION );
} catch ( PDOException $e ) {
var_dump( $e->getMessage() );
}
?>
Desde já agradeço a quem puder ajudar.
Discussão (3)
Carregando comentários...