aula mysql
TRANSCRIPT
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
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).
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.
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’);
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.
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 ”);
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.
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";}
?>
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();
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();
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;
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]";
}}
?>
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);
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";
}}
?>
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.
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;}
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.";}
}?>
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]";
} ?>
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.