Latest News
- Visão Ágil – Community Journal 01
- Cast entre objetos PHP
- PDO e MySQL com UTF-8
- PHP – Criando e tratando exceptions
- Encontro Ágil 2008
- PHP Conference 2008
- Era uma vez…
- On duplicate key update
- SCRUM – Primeiros passos
- Google developer day 2008
Categorias
- AJAX/XAJAX
- Artigos
- Banco de Dados
- Engenharia de Software
- Fun
- geral
- Metodologias
- PHP
- Smarty/Templates
- Uncategorized
Arquivo
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:
- PDO e BEAN no PHP
- MySQL “Connection Character Sets and Collation” documentation
- PDO constructor documentation
- PDO MySQL driver documentation
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
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
Deadlock no Postgres
Posted by cristianmedeiros
Caros, algumas vezes uma de minhas aplicações que roda na madrugada, me envia uma mensagem de deadlock no banco, é uma aplicação em VB (iéca
) e suas mensagens são geradas pelo ODBC (iéca de novo) sendo assim eu não tenho 100% de certeza que é um deadlock real.
Para saber isso eu fiz um sistema de log que armazena as tabelas que estão com algum nível de lock quando a aplicação dispara, a query para saber isso é:
select relname, mode from pg_locks, pg_class where relation = pg_class.oid
Estou compartilhando aqui porque achei dificil de acha-la.
abs
Tags BlogBlogs: postgres, deadlock, lock, query, banco de dados, db



