Jailton,
O link apresentado ressalta mais a questão de segurança que o PDO oferece.
Veja que o scriptcase não importando o driver de conexão já previu e oferece esta segurança!
http://www.scriptcase.com.br/blog/sql-injection/
"SQL Injection no Scriptcase
No Scriptcase todos os inputs de campos, seja na aplicação de formulário, na aplicação de controle, busca ou qualquer outro input
estão protegidos não apenas do SQL Injection como também ao JavaScript Injection e ainda protegido conta a manipulação do código
fonte para execução de comandos SQL."
Logo, tanto faz o driver de conexão que você usa no scriptcase. O scriptcase fornece a segurança.
Bem! Vamos ao que interessa.
Na minha opinião se você pretende:
. Ficar pulando de SGDB em SGDB para testes;
. Irá fazer um sistema que possa rodar em vários SGDB´s como várias soluções comerciais que vemos por ai;
. Ou tem certeza que irá mudar de banco mais tarde.
Então use e abuse do PDO e evite deixar regras no banco.
Pois, alguns SGDB´s tem recursos específicos, avançados e muitos úteis que facilitam nossa vida.
E deixando as regras no SGDB você teria que se preocupar em desenvolver em php e ainda fazer a DDL, DSQL, ESQL e etc dos SGDB´S compatíveis.
Ficando o uso do banco um “arroz com feijão”, somente o básico (select, insert, update, procedures e triggers básicas).
Se você quer:
. Usar recursos específicos e avançados de um SGDB;
. Ter um driver de conexão com melhor desempenho;
. Continuar indefinidamente com o mesmo SGDB.
Faça uso de um driver específico para seu SGDB como php_interbase, MySQLi, php_sqlite e etc e deixe as regras de negócio no banco.
Agora! Como o tipo de driver de conexão é uma questão de escolha pessoal e não devemos somente falar das coisa boas de um ou outro driver.
Eu fiz o texto abaixo com relação ao PDO quando eu STFW e RTFM.
Vamos as vantagens e desvantagens:
PDO (http://php.net/manual/pt_BR/book.pdo.php)
Vantangens:
a)Funciona com 12 drivers de bancos de dados diferentes (4D, MS SQL Server, Firebird/Interbase, MySQL, Oracle, ODBC/DB2, PostgreSQL, SQLite, Informix, IBM, CUBRID);
b) API Orientada a objetos;
c) Possui parâmetros nomeados;
d) Possui prepared statements do lado cliente;
e) Segurança contra injeção de SQL (o Mysqli também possui);
f) E quase tão veloz quanto MySQLi;
g) Facilita a mudança de SGDB mudando somente a conexão. Você somente teria que mexer nos SQL se tivesse algo especifico para determinado banco;
h) Fornece uma biblioteca limpa e consistente, para deixar unificadas as características das extensões que acessam os bancos de dados.
Desvantagens:
a) http://php.net/manual/pt_BR/intro.pdo.php -> O PDO fornece uma camada de abstração de acesso a dados, o que significa que, independentemente de qual banco de dados você está usando, você usa as mesmas funções para emitir consultas e buscar dados. O PDO não fornece uma abstração de banco de dados; não reescreve SQL ou emula características ausentes. Você deve usar uma camada de abstração desenvolvida completamente, se você precisa destas características;
b) Tanto PDO quanto MySQLi são bem rápidas, porém, MySQLi se sai mais rápida nos comparativos; ~2,5% para sentenças não preparadas e ~6,5% para as sentenças preparadas;
Porém, a extensão nativa do MySQL é ainda mais rápida que ambas;
c) Por padrão, ele simula prepared statements. Você pode ativar a versão nativa ao configurar a conexão dele com o banco, mas caso a versão nativa não funcione por algum motivo, ele volta a simular os prepared statements sem disparar erros ou avisos;
d) php_interbase (extensão para firebird e interbase) é mais antiga (1998 - php 3) e nasceu no core do php. Eu considero mais testada e estável.
PDO era uma PECL com primeira versão em 21/05/2004 sendo introduzida no core do php em 26/11/2005;
e) Não tem algumas funções especificas como o php_interbase (driver firebird/interbase) tem e que por vezes abreviam digitação. Você acaba tendo que digitar todo o sql no PDO.
Exemplos:
- ibase_blob_info não tem equivalente no PDO.
- Um simples incremento de generator no php_interbase
ibase_gen_id (“GEN_NAME”,1);,
ficaria no PDO
SELECT GEN_ID( , 1 ) FROM RDB$DATABASE; ou
SET GENERATOR TO ; ou
SELECT NEXT VALUE FOR FROM RDB$DATABASE; ou
ALTER SEQUENCE RESTART WITH ;
f) Não efetua a leitura e tradução das instruções SQL, é apenas realizada a fusão dos métodos mandados para extensão respectiva.
Material extra:
Escolhendo qual API (PDO, Mysql, Mysqli) usar com o Mysql:
http://br2.php.net/mysqlinfo.api.choosing
Algumas fontes:
http://pt.stackoverflow.com/questions/8302/mysqli-vs-pdo-qual-o-mais-recomendado-para-usar
https://www.turbosite.com.br/blog/pdo-ou-mysqli-qual-usar/
http://forum.imasters.com.br/topic/438733-pdo-quando-e-por-que/
https://bugs.php.net/search.php?cmd=display&search_for=interbase+firebird&x=0&y=0
http://narinhachaves.blogspot.com.br/2013/10/pdo-php-data-objects-conexao-em.html