PDO e MySQL com UTF-8

Posted by cristianmedeiros

Se você esta usando PDO, esta tendo dificuldades com UTF-8 no seu MySQL, mesmo com tudo setado para UTF-8, você pode tentar isso:

$pdo = new PDO(
    ‘mysql:host=localhost;dbname=nomedobanco’,
    "user",
    "pass",
    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));

 

O último parametro do construtor do PDO é um array com as opções específicas do driver, no caso, do driver od MySQL. Este parametro é alimentado no velho estilo "array" chave=>valor.

Observem que o parametro (PDO::MYSQL_ATTR_INIT_COMMAND) não se trata de uma configuração de charset, mas sim de um comando que é executado todas as vezes que você conecta no banco. Neste caso, todas as vezes que ele se conecta no banco, ele executa a query "SET NAMES utf8" (acho que é específica do MySQL) que diz para o MySQL utilizar UTF-8 como charset para nossa conexão.

Para saber mais:

Fonte:
http://www.laszlo.nu/post/34159352/how-to-use-utf-8-with-mysql-and-php-data-objects-pdo

Tags BlogBlogs: php, pdo, mysql, utf8, unicode

 

Posted in: Banco de Dados, PHP Comments(0) November 2008

On duplicate key update

Posted by cristianmedeiros

Tá ai um recurso que achei magnifico no MySQL 5, talvez não seja mais novidade para niguém, mas para mim foi bem interessante descobrir que não preciso mais fazer um update na minha abstração de dados, posso fazer tudo com insert e caso uma das chaves já esteja cadastrada o MySQL dispara um update.

O procedimento é muito simples, basta que você tenha uma primary key ou um index único e você poderá utilizar esta técnica.

Exemplo:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;

O comando acima irá atualizar a coluna c com o valor de c+1 quando a primary ou o index for duplicado.

Você pode indicar outros campos para serem atualizados também.

Exemplo:

INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1, b=now();

É uma técnica simples, mas que pode ganhar muito tempo de projeto dependendo da sua aplicação.

Para saber mais:
 


Tags BlogBlogs: mysq, banco de dados, duplicate key

Posted in: Banco de Dados Comments(1) July 2008