Baixe o app para aproveitar ainda mais
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
Compartilhar