Aula MySql

19
Programação para Internet II Aula 3 – Apresentação da biblioteca MySQLi para acesso a banco de dados orientado a objetos Prof. Teresinha Letícia da Silva

Transcript of Aula MySql

Page 1: Aula MySql

Programação para Internet II

Aula 3 – Apresentação da biblioteca MySQLi para acesso a banco de dados

orientado a objetos

Prof. Teresinha Letícia da Silva

Page 2: Aula MySql

Biblioteca MySQLi

O PHP 5 trouxe consigo diversas melhorias no campo da orientação a objetos, veio recheado de classes que se mostram úteis em diversas situações.

Entre tais classes está a MySQLi, que permite a interação com banco de dados MySQL de forma orientada a objetos.

O MySQLi é uma extensão do PHP feita para aproveitar os recursos mais avançados do MySQL.

As funções MySQLi funcionam apenas com PHP 5 (ou superior) e MySQL 4.1.3 (ou superior).

Page 3: Aula MySql

Biblioteca MySQLi

O mysqli possui uma semelhança com a extensão mysql, mas com muito mais funcionalidades.

Características: Interface Orientada a Objetos Suporte para PreparedStatements (declarações preparadas) Suporte a transações Melhores capacidades de depuração Também fornece interface procedural.

Page 4: Aula MySql

Biblioteca MySQLi - Métodos

__construct(): tenta abrir uma conexão com o servidor, utilizando um nome de usuário uma senha e especificando um banco.

$db=new mysqli(servidor, usuario, senha, banco);

Exemplo: $db= new mysqli(‘localhost’, ‘root’, ‘’, ‘exemplo’);

Page 5: Aula MySql

Biblioteca MySQLi - Métodos

• mysqli_connect_errno(): retorna o número de erro para uma conexão mal sucedida.

• mysqli_connect_error(): retorna a descrição de erro para uma conexão mal sucedida.

Page 6: Aula MySql

Biblioteca MySQLi - Métodos select_db(): seleciona um banco de dados.

Exemplo: $db->select_db(‘novo_banco’);

query(): executa uma query no banco de dados selecionado. Esta query pode ser qualquer instrução SQL.

Exemplo: $res= $db->query(“SELECT * FROM tabela ”);

Page 7: Aula MySql

Biblioteca MySQLi - Métodos

Exemplo Crie um novo banco de dados chamado aula.

Crie uma tabela chamada aluno com código(auto incremento), nome e idade

Monte um formulário com os campos de entrada de dados e os botões cadastrar e cancelar.

Page 8: Aula MySql

Biblioteca MySQLi - Métodos Exemplo - Crie o script de cadastro<?php

$nome=$_POST['nome'];$idade=$_POST['idade'];

$db=new mysqli("localhost","root","","aula");

if (mysqli_connect_errno())echo "Não foi possível conectar-se ao banco de dados: " . mysqli_connect_error();

else{

$resultado = $db->query("insert into aluno (nome,idade) values('$nome',$idade)");if ($resultado)

echo "Registro Inserido";else

echo "Não foi possível inserir o registro";}

?>

Page 9: Aula MySql

Biblioteca MySQLi - Métodos fetch_array(): obtém uma linha do resultado e armazena em um

array, numérico, associativo ou ambos. Exemplo: $dados = $res->fetch_array(MYSQLI_NUM); Exemplo: $dados = $res->fetch_array(MYSQLI_ASSOC); Exemplo: $dados = $res->fetch_array(MYSQLI_BOTH);

fetch_array_assoc(): obtém uma linha do resultado e a armazena como um array associativo.

Exemplo: $dados = $res->fetch_array_assoc();

fetch_row(): obtém uma linha do resultado e a armazena como um array numérico.

Exemplo: $dados = $res->fetch_row();

Page 10: Aula MySql

Biblioteca MySQLi

fetch_object(): retorna uma linha de resultado como um objeto cujos nomes são os campos da seleção.

Exemplo: $obj= $res->fetch_object();

free(): libera a memória associada a um resultado. Exemplo: $res->free();

close(): fecha uma conexão com um servidor. Exemplo: $db->close();

Page 11: Aula MySql

Biblioteca MySQLi

• O atributo num_rows do objeto de resultado informa quantas linhas de resultado foram obtidas.• Exemplo: $num_linhas= $res->num_rows;

• O atributo affected_rows informa quantas linhas foram afetadas pela operação anterior.• Exemplo: $num = $db->affected_rows;

Page 12: Aula MySql

Biblioteca MySQLi Exemplo: Vamos criar um script para listar os alunos cadastrados.<?php

$db=new mysqli("localhost","root","","aula");

if (mysqli_connect_errno()){

echo "Não foi possível conectar-se ao banco de dados: " . mysqli_connect_error();}else{

$resultado = $db->query("select * from aluno");while ($dados=$resultado->fetch_array())

{echo "<br> Código: $dados[codigo]

Nome: $dados[nome]Idade: $dados[idade]";

}}

?>

Page 13: Aula MySql

Biblioteca MySQLi

commit(): salva a transação atual. Exemplo: $db->commit();

rollback(): desfaz a transação atual. Exemplo: $db->rollback();

autocommit(): ativa ou desativa o salvamento automático das alterações no banco. Não funciona com tabelas de tipos não baseadas em transações (como MyISAM ou ISAM).

Exemplo: $db->autocommit(TRUE);

Page 14: Aula MySql

Exemplo: Tipo da tabela InnoDB<?php

$db=new mysqli("localhost","root","","aula");

if (mysqli_connect_errno())echo "Não foi possível conectar-se ao banco de dados: " . mysqli_connect_error();

else{

$db->autocommit(FALSE);

$resultado1 = $db->query("insert into aluno (nome,idade) values (‘MARIA',40)");$resultado2 = $db->query("insert into alunos (nome,idade) values ('JOSE',50)");

if ($resultado1==TRUE && $resultado2==TRUE) {$db->commit();echo "Sucesso";

}else {

$db->rollback();echo "Erro";

}}

?>

Page 15: Aula MySql

Criando uma classe para acesso a dados com mysqli

Vamos agora criar uma classe independente para acesso ao Banco de dados usando mysqli.

Nesta classe simples vamos crias os métodos __construct para fazer a conexão com o banco, __destruct para encerrar a conexão, e executa para executar os comandos sql.

Page 16: Aula MySql

Criando uma classe para acesso a dados com mysqli

<?php

class Conexao{

protected $host='localhost';protected $usuario='root';protected $senha='';protected $banco='aula';protected $db;

function __construct(){

$this->db = new mysqli($this->host,$this->usuario,$this->senha,$this->banco);if (mysqli_connect_errno())

echo "Não foi possível conectar-se ao banco de dados: " . mysqli_connect_error();else

return TRUE;}

Page 17: Aula MySql

Criando uma classe para acesso a dados com mysqli

function __destruct(){

$this->db->close();}

function executa($sql){

$resultado = $this->db->query($sql);if ($resultado)

return $resultado;else

echo "Erro na execução do SQL.";}

}?>

Page 18: Aula MySql

Criando uma classe para acesso a dados com mysqli

Agora vamos alterar o script listar.php para usar a classe de conexão:<?php

include("classconexao.php");

$db=new Conexao();

$sql="select * from aluno";

$resultado = $db->executa($sql);

while ($dados=$resultado->fetch_array()){

echo "<br> Código: $dados[codigo]Nome: $dados[nome]Idade: $dados[idade]";

} ?>

Page 19: Aula MySql

Exercício Criar duas páginas simples em PHP uma para

cadastro e outra para listagem de livros de uma livraria. Para isso, criar uma banco simples chamado livraria_exemplo com apenas uma tabela livros.

Estrutura da tabela livros: livros (codigo, titulo, autor, editora, ano)

Usar a classe de conexão criada no exemplo anterior.