Buscar

Biblioteca_1760510

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Tecnologia para Internet II
Prof. Ildo Ramos Vieira
Graduado em ciências de computação – UFC
Especialista em Segurança de Informação - IGTI
Mestre em ciências de computação - UFC
Doutorando em Engenharia de Teleinformática - UFC
29/05/2019(C) 2010 Pearson. 
Todos os direitos 
reservados
1
Integração de PHP com banco de dados classe 
PDO 
29/05/2019 2
Motivação
O aluno deverá ser capaz de:
◦ Conhecer, entender e utilizar a classe PDO para a 
conexão com banco de dados 
29/05/2019 3
Objetivo
PDO (PHP Data Objects) é uma extensão que fornece uma 
interface padronizada para trabalhar com bancos de dados;
Finalidade é abstrair a conexão e interações com os bancos, 
ou seja, independente do banco de dados que estiver sendo 
utilizado os métodos executados serão os mesmos;
 mas isso não significa que seu sistema será portável entre 
diversos bancos de dados;
29/05/2019 4
O que é PDO ?
Esta classe permite a conexão do PHP com os seguintes bancos 
de dados: 
CUBRID
MS SQL Server
Firebird
IBM
Informix
MySQL
MS SQL Server
Oracle
ODBC and DB2
PostgreSQL
SQLite
4D 
29/05/2019 5
Classe PDO PHP
Será necessário instalar os drivers 
correspondentes para cada banco de 
dados 
Driver name Supported databases
PDO_CUBRID Cubrid
PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase
PDO_FIREBIRD Firebird
PDO_IBM IBM DB2
PDO_INFORMIX IBM Informix Dynamic Server
PDO_MYSQL MySQL 3.x/4.x/5.x
PDO_OCI Oracle Call Interface
PDO_ODBC ODBC v3 (IBM DB2, unixODBC and win32 
ODBC)
PDO_PGSQL PostgreSQL
PDO_SQLITE SQLite 3 and SQLite 2
PDO_SQLSRV Microsoft SQL Server / SQL Azure
PDO_4D 4D
29/05/2019 6
PDO Drivers
https://www.php.net/manual/pt_BR/ref.pdo-cubrid.php
https://www.php.net/manual/pt_BR/ref.pdo-dblib.php
https://www.php.net/manual/pt_BR/ref.pdo-firebird.php
https://www.php.net/manual/pt_BR/ref.pdo-ibm.php
https://www.php.net/manual/pt_BR/ref.pdo-informix.php
https://www.php.net/manual/pt_BR/ref.pdo-mysql.php
https://www.php.net/manual/pt_BR/ref.pdo-oci.php
https://www.php.net/manual/pt_BR/ref.pdo-odbc.php
https://www.php.net/manual/pt_BR/ref.pdo-pgsql.php
https://www.php.net/manual/pt_BR/ref.pdo-sqlite.php
https://www.php.net/manual/pt_BR/ref.pdo-sqlsrv.php
https://www.php.net/manual/pt_BR/ref.pdo-4d.php
PDO {
❑ public __construct ( string $dsn [, string $username [, string 
$password [, array $options ]]] ) - Cria uma conexão com o banco
❑ public bool beginTransaction ( void ) - Inicia uma transação
❑ public bool commit ( void ) - Efetiva as alterações em uma 
transação aberta
❑ public mixed errorCode ( void ) - Retorna o código de erro do 
último comando do banco
❑ public array errorInfo ( void ) - Retorna o texto associado ao erro 
do último comando do banco
❑ public int exec ( string $statement ) - Executa um comando SQL
❑ public mixed getAttribute ( int $attribute ) - Recupera o atributo 
de conexão do banco
29/05/2019 7
❑ public static array getAvailableDrivers ( void ) - Retorna um vetor com os 
drivers dos bancos disponíveis
❑ public bool inTransaction ( void ) - Verifica se está em uma transação
❑ public string lastInsertId ([ string $name = NULL ] ) - retorna o último id 
inserido
❑ public PDOStatement prepare ( string $statement [, array $driver_options 
= array() ] ) - Prepara o comando SQL para ser executado
❑ public PDOStatement query ( string $statement ) - Executa uma consulta 
SQL e retorna o objeto
❑ public string quote ( string $string [, int $parameter_type = 
PDO::PARAM_STR ] ) - Adiciona aspas simples em uma string
❑ public bool rollBack ( void ) - Cancela a execução de um comando SQL 
dentro de uma transação
❑ public bool setAttribute ( int $attribute , mixed $value ) - Configura 
atributos no banco de dados
}
29/05/2019 8
<?php
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass’;
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?> 
29/05/2019 9
Exemplo de conexão com o 
MySQL 
<?php
$dsn = 'pgsql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass’;
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
} 
?> 
29/05/2019 10
Exemplo de conexão com o 
PostgreSQL 
Permite executar um comando SQL e retorna a quantidade de 
registros que foram afetados pelo comando.
Este comando não retorna os resultados de uma consulta 
29/05/2019 11
O Método exec
<?php
$dsn = 'pgsql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass’;
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$count = $dbh->exec("insert into aluno(matricula, nome) 
values('201712345', 'Luiz') ");
echo "<p>$count registro foi incluído</p>";
?> 
29/05/2019 12
Exemplo de inclusão:
Criar conexão
Inseri dados 
no BD
<?php
$dsn = 'pgsql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass’;
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$count = $dbh->exec("update aluno set nome='Rodrigo' where 
marticula='201712345') ");
echo "<p>$count registro(s) foi atualizado</p>"; 
?> 
29/05/2019 13
Exemplo de atualização:
Criar conexão
atualiza dados no BD
<?php
$dsn = 'pgsql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass’;
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$count = $dbh->exec("DELETE FROM aluno WHERE matricula = '201712345'");
echo "<p>$count registro foi excluído</p>"; 
?> 
29/05/2019 14
Exemplo de exclusão:
Criar conexão
deleta dados no BD
Executa uma consulta SQL retornando um objeto com os resultados; 
<?php
$dsn = 'pgsql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass’;
try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
$sql = 'SELECT matricula, nome FROM aluno ORDER BY nome';
foreach ($dbh->query($sql) as $row) {
print $row['matricula'] . "\t";
print $row['nome'] . "\t";
} 
?> 
29/05/2019 15
O método query
Criar conexão
recupera dados no BD
Desenvolvimento de um formulário para a inclusão de 
dados em um banco de dados. 
Caso de uso:
Crie um programa para incluir o formulário abaixo em um 
banco de dados:
Dados de entrada:
Nome
Idade
Salário
Data de nascimento 
29/05/2019 16
Integração de PHP com banco de 
dados ( Tela de inclusão ) 
❑ Após a criação do banco de dados, crie a tabela 
abaixo:
29/05/2019 17
Passo 1 - Criação da tabela no banco de dados 
CREATE TABLE `bancodedados`.`pessoa` ( 
`idpessoa` INT NOT NULL AUTO_INCREMENT, 
`nome` VARCHAR(45) NULL, 
`idade` INT NULL, `salario` VARCHAR(45) NULL, 
`pessoacol` DOUBLE NULL, 
`data_nascimento` DATETIME NULL, 
PRIMARY KEY (`idpessoa`));
Formulario.html
<!doctype html>
<html>
<head>
<meta charset=latin1>
<title> Formulário para inclusão de dados</title>
</head>
<body>
<form action=insere.php method=get>
<label for=nome>Nome:</label>
<input type=text id=nome name=nome placeholder="Digite seu nome">
<br><br>
<label for=idade> Idade:</label>
<input type=number id=idade name=idade placeholder="Digite sua idade">
<br><br>
<label for=salario> Salario:</label>
<input type=number id=salario name=salario step="0.01" placeholder="Digite seu salario">
<br><br>
<label for=data> Data Nascimento:</label>
<input type=date id=data name=data placeholder="Digite sua data de nascimento">
<br><br>
<input type=submit value="Salvar Formulário">
</form>
</body>
</html>
29/05/2019 18
Passo 2 - Criação de um formulário HTML 
5
insere.php
<?php
 $nome = $_POST['nome'];
 $idade = $_POST['idade'];
 $salario = $_POST['salario'];
 $nascimento=$_POST['data'];
 $dsn = 'pgsql:dbname=bancodedados;host=127.0.0.1';
 $user = 'postgres';
 $password= 'senha';
 try {
 $dbh = new PDO($dsn, $user, $password);
 } catch (PDOException $e) {
 echo 'Problemas em conectar: ' . $e->getMessage();
 }
 $sql = "insert into pessoa(nome, idade, salario, data_nascimento)
 values('$nome', $idade, $salario, '$data') ";
 $count = $dbh->exec($sql);
 echo "<p> $count registro foi incluído</p>";
?>
29/05/2019 19
Passo 2 - Criação de um formulário HTML 
5
Caso de uso:
Crie um programa para exibir uma tela de consulta 
com os campos abaixo:
❑ Dados de entrada:
❑ Nome
❑ Idade
❑ Salário
❑ Data de nascimento 
29/05/2019 20
Desenvolvimento de um formulário para 
a consulta de dados em um banco de 
dados. 
consuta.php
<?php
 $nome = $_POST['nome'];
 $idade = $_POST['idade'];
 $salario = $_POST['salario'];
 $nascimento=$_POST['data'];
 $dsn = 'pgsql:dbname=bancodedados;host=127.0.0.1';
 $user = 'postgres';
 $password = 'senha';
 try {
 $dbh = new PDO($dsn, $user, $password);
 } catch (PDOException $e) {
 echo 'Problemas em conectar: ' . $e->getMessage();
 }
 $sql = 'SELECT id, nome, idade, salario, data_nascimento FROM pessoa 
ORDER BY nome';
echo "<table border=1>";
echo " <caption>Consulta aos dados das pessoas cadastradas</caption>"; 
29/05/2019 21
Criação de Arquivo consulta
Continuação
consuta.php
echo "
<thead>
<tr>
<th>Nome</th>
<th>idade</th>
<th>Salario</th>
<th>Data de nascimento</th>
<th>;&nsp</th>
<th>;&nsp</th>
</tr>
</thead>";
29/05/2019 22
Criação de Arquivo consulta
Continuação
consuta.php
echo " <tbody>";
foreach ($dbh->query($sql) as $row) {
echo "<tr>";
echo "<td>". $row['nome'] . "</td>"; 
echo "<td>". $row['idade'] . "</td>";
echo "<td>". $row['salario'] . "</td>";
echo "<td>". $row['data_nascimento'] . "</td>";
echo "<td>";
echo "<a href=editar.php?id=".$row['id'].">Editar</a>";
echo "</td>";
echo "<td>";
echo "<a href=excluir.php?id=".$row['id'].">Excluir</a>";
echo "</td>";
echo "</tr>";
}
echo "</tbody>";
echo "</table>"
?> 
29/05/2019 23
Criação de Arquivo consulta
Continuação
Formulario_edita.php
<?php
 $nome = $_POST['nome'];
 $idade = $_POST['idade'];
 $salario = $_POST['salario'];
 $nascimento=$_POST['data'];
 $dsn = 'pgsql:dbname=bancodedados;host=127.0.0.1';
 $user = 'postgres';
 $password = 'senha';
 try {
 $dbh = new PDO($dsn, $user, $password);
 } catch (PDOException $e) {
 echo 'Problemas em conectar: ' . $e->getMessage();
 }
 $sql = "SELECT id, nome, idade, salario, data_nascimento FROM pessoa
where id=$id "; 
29/05/2019 24
Criação de Arquivo Editar
Continuação
Formulario_edita.php
echo "<html>";
echo "<body>";
echo "<form action=edita.php method=post>";
foreach ($dbh->query($sql) as $row) {
echo "<input type=hidden name=id value=$id >";
echo "<label for=nome>Nome:</label>";
echo "<input type=text id=nome name=nome 
placeholder='Digite seu nome' value='"$row['nome']."' >";
echo "<br><br>"; 
echo "<label for=idade> Idade:</label>";
echo "<input type=number id=idade name=idade 
placeholder='Digite sua idade' value='"$row['idade']."' >";
29/05/2019 25
Criação de Arquivo Editar
Continuação
Formulario_edita.php
echo "<br><br>";
echo "<label for=salario> Salario:</label>";
echo "<input type=number id=salario name=salario step='0.01' 
placeholder='Digite seu salario'
value='"$row['salario']."' >";
echo "<br><br>";
echo "<label for=data> Salario:</label>";
echo "<input type=date id=data name=data placeholder='Digite 
sua data de nascimento'
value='"$row['data_nascimento']."' >";
echo "<br><br>";
echo "<input type=submit value='Salvar Formulário’>”;
}
echo "</form>";
echo "</body>";
echo "</html>";
?> 
29/05/2019 26
Criação de Arquivo Editar
Continuação
edita.php
<?php
 $nome = $_POST['nome'];
 $idade = $_POST['idade'];
 $salario = $_POST['salario'];
 $nascimento=$_POST['data'];
 $dsn = 'pgsql:dbname=bancodedados;host=127.0.0.1';
 $user = 'postgres';
 $password = 'senha';
 try {
 $dbh = new PDO($dsn, $user, $password);
 } catch (PDOException $e) {
 echo 'Problemas em conectar: ' . $e->getMessage();
 }
$sql = "update pessoa set nome='$nome', idade=$idade, salario=$salario, 
data_nascimento=$nascimento where id=$id ";
$count = $dbh->exec($sql);
echo "<p> $count registro foi atualizado</p>"; 
29/05/2019 27
Criação de Arquivo Editar
Continuação
delete.php
<?php
 $nome = $_POST['nome'];
 $idade = $_POST['idade'];
 $salario = $_POST['salario'];
 $nascimento=$_POST['data'];
 $dsn = 'pgsql:dbname=bancodedados;host=127.0.0.1';
 $user = 'postgres';
 $password = 'senha';
 try {
 $dbh = new PDO($dsn, $user, $password);
 } catch (PDOException $e) {
 echo 'Problemas em conectar: ' . $e->getMessage();
 }
$sql = "SELECT id, nome, idade, salario, data_nascimento FROM pessoa where id=$id 
";
echo "<html>";
echo "<body>";
$sql = "delete from pessoa where id=$id ";
$count = $dbh->exec($sql);
echo "<p> $count registro foi excluído</p>"; 
?>
29/05/2019 28
Criação de Arquivo Editar
Continuação

Continue navegando