PHP-PDO: Como usar UTF-8 com MySQL e PDO

<?php
$hostname = 'nome_servidor';
$username = 'nome_usuario';
$password = 'senha';
$database = 'nome_banco';
 
try {
    $pdo = new PDO("mysql:host=$hostname;dbname=$database;charset=utf8", $username, $password,
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    echo 'Conexao efetuada com sucesso!';
}
catch(PDOException $e){
    echo $e->getMessage();
}					
?>

20 comentários em “PHP-PDO: Como usar UTF-8 com MySQL e PDO”

  1. Cara, você resolveu meus problemas. Antes eu usa iso-8859-1 e não tinha problema com caracteres acentuado no meu bd, mas vi que a maioria dos sites usam utf-8 e resolvi aderir também, mas os dados no bd sempre vinha com acentuação errada, o problema era só no bd, nas páginas view ficava tudo certo, mas ver as tabelas no bd erradas me deixava incomodado. Agora, graças a você está tudo certo. Obrigado

  2. Minha BD está configurada com UTF-8:
    $DB_conn = new PDO(‘mysql:host=’ . $DB_host . ‘; dbname=’ . $DB_name, $DB_user, $DB_pass);
    $DB_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $DB_conn->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $DB_conn->exec(‘set names utf8’);

    e tenho uma Tabela que preciso inserir dados com acentos:
    ‘CREATE TABLE `’ . $DB_table2 . ‘` (
    `cliente` varchar(50) DEFAULT NULL,
    `endereco` varchar(100) DEFAULT NULL,
    … outros campos …
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE latin1_swedish_ci;’

    Quando tento inserir dados com acentos no campo ‘endereço’
    $sql2 = ‘INSERT INTO ‘ . $DB_table2 . ‘ (`cliente`, `endereco`) VALUES (“‘ . $p_cliente . ‘”, “‘ . $p_end . ‘”)’;
    $rs2 = $DB_conn->prepare($sql2);
    $rs2->execute();

    recebo a seguinte mensagem de erro:

    Fatal error: Uncaught PDOException: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column ‘endereco’ at row 1 in C:\Sistema\of_query.php:26 Stack trace: #0

    Entretanto a informação que está sendo inserida para teste é curta, apenas o nome da cidade com acento: “Ji-Paraná”

  3. Cara, eu não sei como te agradecer. Eu não sou da área, mas faço algumas coisas para agilizar meu trabalho. Criar um certificado por exemplo, usando o PHP Word… Nada para uso externo, só meu. As vezes a gente pergunta para alguma alguma coisa e a pessoa diz para gente estudar… Eu fico feliz quando vejo alguém como você ensinando, sem julgar e apresentado uma solução que funciona!

    OBRIGADO. MIL VEZES OBRIGADO!

  4. Cara, eu nem costumo comentar esses posts. Mas esse aqui salvou vidas. Tô quase 24 horas sem dormir tentando resolver esse problema. Muito Obrigado!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima