Você está na página 1de 19

Programao para

Internet II
Aula 3 Apresentao da biblioteca
MySQLi para acesso a banco de dados
orientado a objetos
Prof. Teresinha Letcia da Silva

Biblioteca MySQLi

O PHP 5 trouxe consigo diversas melhorias no campo


da orientao a objetos, veio recheado de classes que
se mostram teis em diversas situaes.

Entre tais classes est a MySQLi, que permite a


interao com banco de dados MySQL de forma
orientada a objetos.

O MySQLi uma extenso do PHP feita para aproveitar


os recursos mais avanados do MySQL.

As funes MySQLi funcionam apenas com PHP 5 (ou


superior) e MySQL 4.1.3 (ou superior).

Biblioteca MySQLi

O mysqli possui uma semelhana com a extenso


mysql, mas com muito mais funcionalidades.

Caractersticas:
Interface Orientada a Objetos
Suporte para PreparedStatements (declaraes preparadas)
Suporte a transaes
Melhores capacidades de depurao
Tambm fornece interface procedural.

Biblioteca MySQLi - Mtodos

__construct(): tenta abrir uma conexo com o servidor,


utilizando um nome de usurio uma senha e
especificando um banco.

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

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

Biblioteca MySQLi - Mtodos


mysqli_connect_errno(): retorna o nmero de
erro para uma conexo mal sucedida.
mysqli_connect_error(): retorna a descrio
de erro para uma conexo mal sucedida.

Biblioteca MySQLi - Mtodos

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 instruo
SQL.

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

Biblioteca MySQLi - Mtodos

Exemplo
Crie um novo banco de dados chamado aula.

Crie uma tabela chamada aluno com cdigo(auto


incremento), nome e idade

Monte um formulrio com os campos de entrada de


dados e os botes cadastrar e cancelar.

Biblioteca MySQLi - Mtodos

Exemplo - Crie o script de cadastro

<?php
$nome=$_POST['nome'];
$idade=$_POST['idade'];
$db=new mysqli("localhost","root","","aula");
if (mysqli_connect_errno())
echo "No foi possvel 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 "No foi possvel inserir o registro";
}
?>

Biblioteca MySQLi - Mtodos

fetch_array(): obtm uma linha do resultado e armazena em um


array, numrico, 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(): obtm uma linha do resultado e a armazena
como um array associativo.
Exemplo: $dados = $res->fetch_array_assoc();
fetch_row(): obtm uma linha do resultado e a armazena como um
array numrico.
Exemplo: $dados = $res->fetch_row();

Biblioteca MySQLi

fetch_object(): retorna uma linha de resultado como um


objeto cujos nomes so os campos da seleo.
Exemplo: $obj= $res->fetch_object();
free(): libera a memria associada a um resultado.
Exemplo: $res->free();
close(): fecha uma conexo 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 operao 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 "No foi possvel conectar-se ao banco de dados: " . mysqli_connect_error();
}
else
{
$resultado = $db->query("select * from aluno");
while ($dados=$resultado->fetch_array())
{
echo "<br> Cdigo: $dados[codigo]
Nome: $dados[nome]
Idade: $dados[idade]";
}
}
?>

Biblioteca MySQLi

commit(): salva a transao atual.


Exemplo: $db->commit();
rollback(): desfaz a transao atual.
Exemplo: $db->rollback();
autocommit(): ativa ou desativa o salvamento
automtico das alteraes no banco. No funciona com
tabelas de tipos no baseadas em transaes (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 "No foi possvel 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


mtodos __construct para fazer a conexo
com o banco, __destruct para encerrar a
conexo, 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 "No foi possvel 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 execuo do SQL.";
}
}
?>

Criando uma classe para


acesso a dados com mysqli

Agora vamos alterar o script listar.php para usar a classe de conexo:

<?php
include("classconexao.php");
$db=new Conexao();
$sql="select * from aluno";
$resultado = $db->executa($sql);
while ($dados=$resultado->fetch_array())
{
echo "<br> Cdigo: $dados[codigo]
Nome: $dados[nome]
Idade: $dados[idade]";
}
?>

Exerccio

Criar duas pginas 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 conexo criada no exemplo


anterior.

Você também pode gostar