• Nenhum resultado encontrado

Acesso à Banco de dados

N/A
N/A
Protected

Academic year: 2021

Share "Acesso à Banco de dados"

Copied!
19
0
0

Texto

(1)

Giuliano Prado

giucontato@gmail.com www.professorgiuliano.vai.la

Acesso à Banco de dados

com PDO

(2)

 Nas versões anteriores do PHP (sobretudo a 4), as funções para acesso ao BD eram distintas para cada SGBD, não permitindo a portabilidade do código realizado.

 A partir da versão 5 do PHP, PDO foi adicionado ao núcleo do sistema.

 PDO é uma classe para trabalhar com banco

de dados no PHP de forma orientada a

objetos.

(3)
(4)

Dentre os principais benefícios em utilizar PDO podemos citar:

◦ PDO vem compilado no núcleo do PHP e portanto é bem mais rápido do que uma classe para trabalhar com banco de dados comum

◦ PDO possui uma camada de abstração para trabalhar com banco de dados distintos, o que te permite executar comandos e trabalhar com o retorno dos dados do banco de forma semelhante para qualquer banco de dados suportado.

◦ Como trata-se de uma classe, você pode criar suas próprias

classes abarcando todo o recurso que PDO já possui graças

a herança que a programação OO nos oferece.

(5)

Para conectar com o banco de dados, quando você

instancia a classe PDO em um dado objeto, você

deve passar os parâmetros necessários.

(6)

A forma mais simples de executar um comando ou

consulta é utilizar o método query do PDO.

(7)

O método fetch permite você escolher o formato que os dados irão retornar, no nosso caso foi passado como parâmetro PDO::FETCH_ASSOC, o que retorna um array com o nome das colunas como índice.

Outras opções são:

◦ PDO::FETCH_NAMED – praticamente igual ao FETCH_ASSOC, com a diferença de que caso existam colunas com mesmo nome no retorno da consulta SQL, FETCH_NAMED irá juntar os valores das duas ou mais colunas num único array.

◦ PDO::FETCH_FUNC – Permite você passar uma função que

irá interagir com os valores das colunas. Os valores das

colunas são passados à função como parâmetros.

(8)

PDO::FETCH_BOTH – Irá retornar um array indexado tanto pelo nome da coluna quanto pelo índice numérico a iniciar por 0.

PDO::FETCH_GROUP – Agrupa valores iguais da primeira coluna, no nosso caso, livros com o mesmo ISBN serão agrupados pelo índice do ISBN.

PDO::FETCH_KEY_PAIR – Exige que o retorno do sql possua exatamente duas colunas, agrupando os valores da primeira coluna como índice e os valores da segunda como valores do array de retorno.

PDO::FETCH_UNIQUE – retorna somente valores únicos,

caso houvesse dois livros com o mesmo ISBN,

FETCH_UNIQUE retornaria apenas uma.

(9)

PDO::FETCH_BOUND – Útil quando você trabalha com o método bindColumn(), atribui o valor da coluna à variável informada neste método.

PDO::FETCH_CLASS – Retorna uma nova instância da

classe que você passa como parâmetro. Caso a classe

passada como parâmetro tenha propriedades com os

mesmos nomes das colunas, os valores serão

atualizados, caso negativo, uma nova propriedade com

o nome da coluna será criada no objeto instanciado. É

como um objeto filho que herda as propriedades do pai

e tem também suas próprias propriedades.

(10)

Embora a classe instanciada “Livro” não possui uma propriedade “ano_publicacao”, essa propriedade existe pois é uma coluna da tabela que foi convertida em uma

propriedade do objeto instanciado.

(11)

PDO::FETCH_CLASSTYPE – Utilizado junto com FETCH_CLASS, define que é para usar o nome da primeira coluna como nome da classe de retorno.

PDO::FETCH_INTO – Praticamente igual a PDO::FETCH_CLASS, com a diferença de que você passa um objeto já instanciado, o qual terá suas propriedades atualizadas.

◦ Um detalhe sobre o PDO::FETCH_INTO é que não funciona

com o método fechAll, ou seja, você terá que invocar o

método setFetchMode.

(12)
(13)

PDO::FETCH_SERIALIZE – Igual FETCH_INTO porém o objeto é providenciado como uma string

serializada.

PDO::FETCH_NUM – retorna um array indexado

pelo número da coluna, iniciando com o número 0.

Ideal para quem quer obter o retorno de uma consulta sql no formato de array.

PDO::FETCH_OBJ – retorna um objeto anônimo onde as colunas das tabelas se tornam

propriedades dos objetos.

PDO::FETCH_LAZY – combina PDO::FETCH_BOTH com

PDO::FETCH_OBJ

(14)

O método query ira armazenar na variável $rs todos os dados referentes a consulta do banco.

Após a variável $rs ser populada, devemos utilizar um while para percorrer esses dados e trabalharmos com os valores.

Dentro do while inserimos o método fetch do PDO que tem como função resgatar linha a linha do resultado da consulta.

No método fetch utilizamos um parâmetro PDO::FETCH_OBJ, este parâmetro define a forma na qual os dados serão retornados e armazenados na variável

$row, criada dentro do while.

O PDO::FETCH_OBJ trata cada linha da consulta como um objeto, transformando os campos que foram retornados em atributos do objeto $row.

(15)

 Caso você vá pegar dados oriundos de um formulário web ou mesmo de um banco de dados para formar a consulta sql ou comando sql, o ideal é utilizar o método do PDO prepare e bindParam .

 Utilizando esses métodos: prepare e

bindParam, você assegura que seu script

estará livre de “sql injection”.

(16)
(17)

 Na formação do sql, quando usando o prepare , você define um nome que será substituído por outro valor colocando dois pontos antes deste nome.

 Após isso, quando invocar o método bindParam , você deve informar o mesmo nome que adicionou na formação do sql como primeiro parâmetro do método.

 O segundo parâmetro de bindParam é a variável que possui o valor que deve ser substituído.

 Por fim, o terceiro parâmetro é uma constante

do PDO que informa ao sistema que tipo de

dado você está adicionando ao sql.

(18)

 Os valores possíveis para a constante são:

◦ PDO::PARAM_STR – para valores strings, datas, horas…

◦ PDO::PARAM_INT – para valores inteiros

◦ PDO::PARAM_BOOL – para valor booleano (true ou false)

◦ PDO::PARAM_NULL – valor nulo (null)

◦ PDO::PARAM_LOB – representa valores de grande quantidade de dados

◦ PDO::PARAM_STMT – representa um conjunto de registros, atualmente não é suportado por nenhum driver

◦ PDO::PARAM_INPUT_OUTPUT – especifica que é um parâmetro de entrada e saída para “stored

procedures”

(19)

O nome foi inserido em um segundo momento com o

% (per cento), pois em SQL ele representa um coringa.

Logo estaremos buscando por todas as pessoas

armazenadas no banco de dados cujo seu nome inicie

com a(s) letra(s) informada na variável $nome por

exemplo.

Referências

Documentos relacionados

mandar para Eretz,para os chaverim da Aliat-Hancar de Bror Chail, Além do dinheiro da Kupa, vancs fazer trabalhos manuais para vender, e mais fâãcilmente comprar o presente,.

Se necessitar de uma análise ao sangue, informe o seu médico ou o pessoal do laboratório de que está a tomar Visanne, porque este pode afectar os resultados de algumas

Os elementos caracterizadores da obra são: a presença constante de componentes da tragédia clássica e o fatalismo, onde o destino acompanha todos os momentos das vidas das

a) O polícia disse um palavrão, após ter saído da casa de Adrian. Corrige as falsas.. A mãe também está com gripe. “Quase que não consegui ficar calado quando vi que não

Eles variam em género (masculino e feminino), número (singular e plural) e grau (normal, diminutivo e aumentativo).. As subclasses

The process of implementation of the Forest Code is inherently a redefinition of the bundle of property rights to land, in which there is currently a mismatch between de facto and

o Caso uma entidade possua mais de um atributo (ou conjunto de atributos) candidatos a identificador, somente um deve ser escolhido para tal finalidade..

Oferecer chances para jovens em início de carreira é uma prática comum também na planta de Mogi das Cruzes, assim como encontrar em nossos setores colaboradores que iniciaram