PDO | Material Complementar

Algumas informações complementares sobre PDO e questões relacionadas ao tema

Classes do PDO

Classe PDO

A classe PDO é uma classe que representa a conexão entre o PHP e o Banco de Dados.

PDO { public __construct ( string $dsn [, string $username [, string $passwd [, array $options ]]] )
public beginTransaction ( void ) : bool
public commit ( void ) : bool
public errorCode ( void ) : string
public errorInfo ( void ) : array
public exec ( string $statement ) : int
public getAttribute ( int $attribute ) : mixed
public static getAvailableDrivers ( void ) : array
public inTransaction ( void ) : bool
public lastInsertId ([ string $name = NULL ] ) : string
public prepare ( string $statement [, array $driver_options = array() ] ) : PDOStatement
public query ( string $statement ) : PDOStatement
public quote ( string $string [, int $parameter_type = PDO::PARAM_STR ] ) : string
public rollBack ( void ) : bool
public setAttribute ( int $attribute , mixed $value ) : bool
}

Classe PDOException

A classe PDOException é uma classe que estende RuntimeException e é responsável por capturar qualquer erro gerado no PDO.

PDOException extends RuntimeException {
// Propriedades
public array $errorInfo;
protected string $code;
// Propriedades herdadas
protected string $message;
protected int $code;
protected string $file;
protected int $line;
// Métodos herdados
final public Exception::getMessage ( void ) : string
final public Exception::getPrevious ( void ) : Exception
final public Exception::getCode ( void ) : mixed
final public Exception::getFile ( void ) : string
final public Exception::getLine ( void ) : string
final public Exception::getTrace ( void ) : array
final public Exception::getTraceAsString ( void ) : string
public Exception::__toString ( void ) : string
final private Exception::__clone ( void ) : string
}

Classe PDOStatement

A classe PDOStatement representa uma 'instrução preparada' (pretared statement) e, depois de executada, também representa seu conjunto de resultados.

PDOStatement implements Traversable {
// Propriedades
readonly string $queryString;
// Métodos
public bindColumn ( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] ) : bool
public bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] ) : bool
public bindValue ( mixed $parameter , mixed $value [, int $data_type = PDO::PARAM_STR ] ) : bool
public closeCursor ( void ) : bool
public columnCount ( void ) : int
public debugDumpParams ( void ) : void
public errorCode ( void ) : string
public errorInfo ( void ) : array
public execute ([ array $input_parameters ] ) : bool
public fetch ([ int $fetch_style [, int $cursor_orientation = PDO::FETCH_ORI_NEXT [, int $cursor_offset = 0 ]]] ) : mixed
public fetchAll ([ int $fetch_style [, mixed $fetch_argument [, array $ctor_args = array() ]]] ) : array
public fetchColumn ([ int $column_number = 0 ] ) : mixed
public fetchObject ([ string $class_name = "stdClass" [, array $ctor_args ]] ) : mixed
public getAttribute ( int $attribute ) : mixed
public getColumnMeta ( int $column ) : array
public nextRowset ( void ) : bool
public rowCount ( void ) : int
public setAttribute ( int $attribute , mixed $value ) : bool
public setFetchMode ( int $mode ) : bool
}

Informações Úteis

Constantes Pré Definidas

O PDO possui uma série de Constantess Pré Definidas. A seguir veremos as principais, mas vale conferir a lista de todas elas, basta clicar nesse link.

Documentação completa sobre as constantes pré definidas
Constante Descrição
PDO::PARAM_BOOL Representa dado do tipo booleano (1 como true ou 0 como false)
PDO::PARAM_NULL Representa dado do tipo SQL NULL
PDO::PARAM_INT Representa dado do tipo SQL INTEGER
PDO::PARAM_STR Representa dado do tipo SQL CHAR, VARCHAR e outros relacionados a strings
PDO::FETCH_ASSOC Retorna cada registro (row) como um array indexado pelo nome da coluna.
Em caso de colunas com o mesmo nome, retorna apenas um valor por nome de coluna
PDO::ERRMODE_EXCEPTION Dispara o PDOException em caso de erros (como falha na conexão), útil para debug

Outras maneiras de se conectar ao Banco de Dados com PHP

Alternativas ao PDO

Uma alternativa ao uso do PDO é o mysqli. Também existe o mysql, mas foi descontinuado na versão 7.0.


Comparação entre mysqli, PDO e mysql

Vamos comparar as principais características de cada modo de se conectar ao Banco de Dados permitido pelo PHP:

* Com algumas restrições.
Característica mysqli PDO mysql
Versão PHP de introdução 5.0 5.1 2.0
Existente no PHP 5.0
Existente no PHP 7.0
Status de Desenvolvimento Ativo Ativo Removido
Ciclo de Vida Ativo Ativo Removido
Uso Recomendado
Interface Orientada a Objetos
Interface Procedural
Consultas Assíncronas
Conexões Persistentes
Suporta Charsets
Prepared Statements do lado do Servidor
Prepared Statements do lado do Cliente
Stored Procedures
Statements Múltiplos ✓*
Transactions
Transactions controladas por SQL
Todas Funcionalidades do MySQL 5.1+ ✓*

Conclusão

Não há uma maneira melhor nem mais correta de se conectar ao Banco de Dados - mas é claro que não queremos usar a API mysql, pois foi descontinuada. Tendo dito isso, terá de escolher entre msqli e PDO. Então a principal pergunta que deve se fazer é:

O que é mais importante no meu projeto - performance ou portabilidade?

Se a resposta for performance e estiver certo de que o projeto sempre usará o MySQL, opte pelo mysqli. Agora se for portabilidade, é mais seguro optar pelo PDO.

No curso, abordaremos o PDO, por se tratar de um modo mais seguro e mais recente, mas vale estudar sobre mysqli também - acesse esse link para saber mais.

Referências sobre PDO