Procurar
Palavras-chaves
Últimos assuntos
Tópicos mais visitados
MySQL Orientado a Objetos no PHP
Página 1 de 1
MySQL Orientado a Objetos no PHP
O PHP 5 (que já não é novidade) chegou e 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 que veremos aqui é uma introdução ao uso dos recursos do MySQLi, que vai bem além do que será mostrado.
Para começar, uzaremos uma base de dados (banco de dados ou database, se preferir, dá na mesma) de exemplo como a abaixo (vou chamada de usuarios):
usuario senha email
fulano 123456 fulano@exemplo.com.br
beltrano asdfgh beltrano@exemplo.com.br
cicrano abcdef cicrano@exemplo.com.br
Um exemplo simples da forma tradicional de uso seria:
<?php
// Acesso de usuário
$usuario = "fulano";
$senha = "123456";
// Conexão
$banco = mysql_connect("localhost", "usuario", "senha");
// Banco
mysql_select_db("teste", $banco);
// Query
$res = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario' AND senha='$senha'", $banco);
// Lendo o resultado
if($resultado = mysql_fetch_array($res)) {
// E aqui você continua...
}
?>
Alguma coisas mudam quando se faz este serviço usando MySQLi. O que é de se esperar: tudo começa na instanciação do objeto da classe, que faz logo a conexão com o banco e a disponibiliza. O construtor recebe diversos parâmetros, mas os que mostrarei são os quatro primeiros, que correspondem a servidor, usuario, senha e banco, as primeiras linhas do código anterior ficariam assim:
<?php
// Acesso de usuário
$usuario = "fulano";
$senha = "123456";
// Conexão e banco
$banco = new MySQLi("localhost", "usuario", "senha", "teste");
Se os dados informados estiverem corretos, agora a variável $banco irá apontar para um objeto da classe MySQLi. Em seguida devemos chamar algum método da classe para continuar trabalhando, o equivalente à função mysql_query é o método MySQLi::query, que recebecomo parâmetro a string com o comando SQL e retorna um objeto MySQLi_Result no caso se um comando SELECT, SHOW, DESCRIBE ou EXPLAIN ou um booleano (TRUE ou FALSE) para os demais (como DELETE ou UPDATE). Então teremos:
// Query
$res = $banco->query(“SELECT * FROM usuarios WHERE usuario=’$usuario’AND senha=’$senha’”);
Finalmente executamos a consulta, podemosentão varrer os resultados obtidos, para isso teremos em mãos os métodos (os mais comuns de serem usados) MySQLi_Result::fetch_array, MySQLi_Result::fetch_assoc, MySQLi_Result::fetch_row e MySQLi_Result::fetch_object. Para compatibilidade com o primeiro exemplo, vejamos com MySQLi_Result::fetch_assoc:
// Lendo o resultado
if($ressultado = $res->fetch_assoc()) {
// E aqui você continua...
}
?>
Isso fez o serviço que queriamos de forma orientada a objetos, mas não necessariamente aumenta a segurança do código, algo que poderia fazer isso é o uso de Prepared Statement, que é possível de ser usado com MySQLi, mas este artigo se tornaria grande demais, por hora, vejamos o resultado final completo:
<?php
// Acesso de usuário
$usuario = "fulano";
$senha = "123456";
// Conexão e banco
$banco = new MySQLi("localhost", "usuario", "senha", "teste");
// Query
$res = $banco->query("SELECT * FROM usuarios WHERE usuario='$usuario'AND senha='$senha'");
// Lendo o resultado
if($ressultado = $res->fetch_assoc()) {
// E aqui você continua...
}
?>
Para começar, uzaremos uma base de dados (banco de dados ou database, se preferir, dá na mesma) de exemplo como a abaixo (vou chamada de usuarios):
usuario senha email
fulano 123456 fulano@exemplo.com.br
beltrano asdfgh beltrano@exemplo.com.br
cicrano abcdef cicrano@exemplo.com.br
Um exemplo simples da forma tradicional de uso seria:
<?php
// Acesso de usuário
$usuario = "fulano";
$senha = "123456";
// Conexão
$banco = mysql_connect("localhost", "usuario", "senha");
// Banco
mysql_select_db("teste", $banco);
// Query
$res = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuario' AND senha='$senha'", $banco);
// Lendo o resultado
if($resultado = mysql_fetch_array($res)) {
// E aqui você continua...
}
?>
Alguma coisas mudam quando se faz este serviço usando MySQLi. O que é de se esperar: tudo começa na instanciação do objeto da classe, que faz logo a conexão com o banco e a disponibiliza. O construtor recebe diversos parâmetros, mas os que mostrarei são os quatro primeiros, que correspondem a servidor, usuario, senha e banco, as primeiras linhas do código anterior ficariam assim:
<?php
// Acesso de usuário
$usuario = "fulano";
$senha = "123456";
// Conexão e banco
$banco = new MySQLi("localhost", "usuario", "senha", "teste");
Se os dados informados estiverem corretos, agora a variável $banco irá apontar para um objeto da classe MySQLi. Em seguida devemos chamar algum método da classe para continuar trabalhando, o equivalente à função mysql_query é o método MySQLi::query, que recebecomo parâmetro a string com o comando SQL e retorna um objeto MySQLi_Result no caso se um comando SELECT, SHOW, DESCRIBE ou EXPLAIN ou um booleano (TRUE ou FALSE) para os demais (como DELETE ou UPDATE). Então teremos:
// Query
$res = $banco->query(“SELECT * FROM usuarios WHERE usuario=’$usuario’AND senha=’$senha’”);
Finalmente executamos a consulta, podemosentão varrer os resultados obtidos, para isso teremos em mãos os métodos (os mais comuns de serem usados) MySQLi_Result::fetch_array, MySQLi_Result::fetch_assoc, MySQLi_Result::fetch_row e MySQLi_Result::fetch_object. Para compatibilidade com o primeiro exemplo, vejamos com MySQLi_Result::fetch_assoc:
// Lendo o resultado
if($ressultado = $res->fetch_assoc()) {
// E aqui você continua...
}
?>
Isso fez o serviço que queriamos de forma orientada a objetos, mas não necessariamente aumenta a segurança do código, algo que poderia fazer isso é o uso de Prepared Statement, que é possível de ser usado com MySQLi, mas este artigo se tornaria grande demais, por hora, vejamos o resultado final completo:
<?php
// Acesso de usuário
$usuario = "fulano";
$senha = "123456";
// Conexão e banco
$banco = new MySQLi("localhost", "usuario", "senha", "teste");
// Query
$res = $banco->query("SELECT * FROM usuarios WHERE usuario='$usuario'AND senha='$senha'");
// Lendo o resultado
if($ressultado = $res->fetch_assoc()) {
// E aqui você continua...
}
?>
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
Qua 16 Nov - 16:14 por fernandosena
» Segurança e redes sem fio
Qua 16 Nov - 16:11 por fernandosena
» Nokia lançará tablet com Windows 8 em junho de 2012, diz executivo
Qua 16 Nov - 16:05 por fernandosena
» Empresa registra aumento de 472% no número de vírus para Android
Qua 16 Nov - 16:03 por fernandosena
» YouTube investe US$ 100 milhões em vídeos
Sex 7 Out - 8:34 por fernandosena
» Todos os títulos futuros da Microsoft devem trazer suporte para o Kinect
Sex 7 Out - 8:25 por fernandosena
» Resident Evil 5 - PC
Sex 7 Out - 8:22 por fernandosena
» Novo trailer de Assassin’s Creed Revelations é lançado
Sex 7 Out - 8:12 por fernandosena
» Biostar apresenta nova placa-mãe que permite acesso remoto via smartphones
Sex 7 Out - 8:08 por fernandosena