Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

newboxters

Classe PHP - manipular MySQL (conexão, select, insert, update, delete)

Recommended Posts

Olá pessoal.

Gostaria de saber o que vocês acham de classes PHP somente para manipular MySQL (conexão, select, insert, update, delete)? Pois isso na verdade é algo bom de se utilizar no desenvolvimento de um script, ou só mesmo para facilitar a tarefa de novatos para manipular os registros do banco de dados?

 

E no meu caso por exemplo, eu consigo escrever querys MySQL sem problemas, mas se for algo realmente útil de se usar em uma aplicação, quais as vantagens, em relação aos métodos tradicionais?

 

Agradeço pelos esclarecimentos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma delas é a reutilização de códigos..

 

Me corrijam se estiver errado.

 

Att,

Leandro Barral.

É isso mesmo. Com classes (não só para conexão com banco de dados) facilita e agiliza o desenvolvimento de um sistema, pois você reutilizará os mesmos códigos para aplicar em novos objetivos e com isso, ter mais velocidade na conclusão de um script. Não só "novatos" devem utilizar, mas programadores profissionais em aplicações PHP de qualidade, sempre trabalham com classes.

 

Não é necessário reinventar a roda, basta ir aperfeiçoando ou utilizá-la para criar ótimas novidades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois que comecei com o Zend (que trabalha com oop) nao vejo mais produtividade em programação procedural.. heauheaue

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao so reutilizacao, como mais velocidade as tarefas de um sistema... com certeza poo foi a melhor coisa q inventaram na programacao....

 

(leandro o que seria programacao procedural...?)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo com vocês, ..para conexão eu uso uma classe e facilita muito, agora infelizmente meus projetos estão todos estruturados :S .. ainda não tive tempo pra estudar mais e aplicar poo no meu "framework" ... "/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade o interessante é usar uma classes de persistencia de dados, que te traz inumeras vantagens, entre elas é diminuiir os erros de SQL, e aplicar situações de consultas bem mais complexas do que o trivial select, eu recomendo estudarem Doctrine, Lumine(projeto made in brasil) ou propel, os três projetos são bons, com grande destaque ao doctrine.

Eu como não gosto muito de alguns frameworks, utilizo doctrine e smarty e assim posso aplicar MVC em minhas aplicações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, eu entendi que classes são importantes para facilitar o desenvolvimento de scripts, mas no caso de uma classe para manipular o MySQL ainda não percebi esse efeito. Quer dizer que a melhor maneira (tanto no quesito de qualidade como em facilidade) para se gerenciar dados do BD é utilizando uma classe?

 

Poderiam então me indicar qual(is) classe(s) vocês utilizam para conectar ao banco de dados e realizar selects para exibir os registros ou inserir/editar/excluir registros do banco de dados MySQL?

 

Pois pelos exemplos que eu vi até o momento, além de algumas utilizarem métodos antigos/ultrapassados, não chegam a facilitar a utilização, só é outra maneira de reescrever - um insert por exemplo:

 

De:

$sql = "INSERT INTO tabela (campo, outro_campo, novo_campo) VALUES ('$campo', '$outro_campo', 'novo texto')";

$query = mysql_query($sql);

 

Para:

$dados = array('campo' => $campo, 'outro_campo' => $outro_campo, 'novo_campo' => 'novo texto');

$obj->inserir('tabela', $dados);

É isso que uma classe MySQL faz (só reescrever uma instrução SQL - de outro jeito)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo, eu entendi que classes são importantes para facilitar o desenvolvimento de scripts, mas no caso de uma classe para manipular o MySQL ainda não percebi esse efeito. Quer dizer que a melhor maneira (tanto no quesito de qualidade como em facilidade) para se gerenciar dados do BD é utilizando uma classe?

 

Poderiam então me indicar qual(is) classe(s) vocês utilizam para conectar ao banco de dados e realizar selects para exibir os registros ou inserir/editar/excluir registros do banco de dados MySQL?

 

Pois pelos exemplos que eu vi até o momento, além de algumas utilizarem métodos antigos/ultrapassados, não chegam a facilitar a utilização, só é outra maneira de reescrever - um insert por exemplo:

 

De:

$sql = "INSERT INTO tabela (campo, outro_campo, novo_campo) VALUES ('$campo', '$outro_campo', 'novo texto')";

$query = mysql_query($sql);

 

Para:

$dados = array('campo' => $campo, 'outro_campo' => $outro_campo, 'novo_campo' => 'novo texto');

$obj->inserir('tabela', $dados);

É isso que uma classe MySQL faz (só reescrever uma instrução SQL - de outro jeito)?

 

Bom pelo exemplo que você mostrou, deve estar se referindo a classes como estas (ou semelhantes):

http://forum.imasters.com.br/index.php?showtopic=315079

 

É desse tipo? Pois há classes muito melhores, pois essa sim é realmente, como você disse:

"Pois pelos exemplos que eu vi até o momento, além de algumas utilizarem métodos antigos/ultrapassados, não chegam a facilitar a utilização, só é outra maneira de reescrever..."

 

Não utiliza um bom código para facilitar o reaproveitamento.

Tente então buscar por classes orientada a objetos (OOP) e que utilizam a extensão MySQLi:

http://br.php.net/manual/pt_BR/book.mysqli.php

 

Um bom lugar para se encontrar classes bem estruturadas é aqui:

http://www.phpclasses.org/browse/class/10.html

Veja se encontra e poste no tópico suas novas experiências.

 

Tenha um ótimo ano. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, eu uso ess aqui, peguei aqui no iMasters mesmo, apenas alterei algumas coisas:

 

<?php
class conex{
	//Definindo a variável que receberá a conexão.
	var $con;
	//Definindo a variável que receberá as informações do mysql num array.

	var $infos=array('localhost','USER','SENHA','BASE DE DADOS');

	//Função para abrir a conexão com a base de dados.
	function abrir(){
		$this->con=mysql_pconnect($this->infos[0],$this->infos[1],$this->infos[2])
		or die('Erro ao se conectar com  abase de dados' .mysql_error($this->con));
		mysql_select_db($this->infos[3],$this->con)or die('erro ao selecionar a base de dadis'.mysql_error($this->con));
	}
	//Função para fechar a conexão com a base de dados.
	function fechar(){
		return mysql_close($this->con)or die('Erro ao fechar'.mysql_error($this->con));
	}
	//Função para realizar consultas, querys.
	function query($sql){
		//abro a conexão na função
		$this->abrir();
		//faço a query
		$query=mysql_query($sql)or die('Erro na query da class' .mysql_error($this->con));
		return $query;
		//fecho a conexão
		$this->fechar();
	}
	//função para liberar memória no servidor.
	function memori($sql){
	//novamente abro conxão
	$this->abrir();
	//retorno a função para limpar a memória ocupada pelas querys.
	return mysql_free_result($sql)or die('erro ao limpar a memória'.mysql_error($this->con));
	//fecho a conexão.
	$this->fechar();
	}
	function modo(){
		return $_SERVER['REQUEST_METHOD'];
	}
	function url(){
		return $_SERVER['QUERY_STRING'];
	}
	function rows($sql){
	return mysql_num_rows($sql)or die(mysql_error($this->con));
	}
}
/*
metodo de utilização:
$con=new conex(); Instancia a class
$con->abrir();	Abre a conexão com o DB
$consulta=$con->query("SELECT * FROM user"); Selecione os dados de uma tabela.
$con->fechar();   fecha a conexão com o DB.
*/
?>

Adicionei umas coisas a mais ai mais foi pra uso pessoal, na verdade não tem nada haver com a conexão com a base de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo Lúcio, entendi o que você quis dizer, mas infelizmente eu ainda não encontrei uma classe boa como você disse, nem no google, nem no phpclass ou fóruns em geral.

 

Alaerte, sua classe parece ser boa, mas não utiliza MySQLi e sim o método tradicional do mysql.

Além disso, ela também não facilita o while. Não sei se isso é importante, mas já vi classes que permitem isso também.

O que eu achei bom, é que para sua classe não precisa ficar abrindo ou fechando a conexão, pois isso ela faz automaticamente, basta escrever diretamente a instrução MySQL desejada, mas ainda acho que há classes melhores.

 

Bom, se alguém souber ou puder me indicar uma classe que use MySQLi, vou agradecer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma vantagem de se utilizar classes para o acesso ao banco de dados, como essa q você está se referindo é o fato da abstração.

 

pois você pode acessar o mysql, sql server ,oracle etc, apenas mudando essa classe e não as outras classes de seu projeto, seria uma interface para o acesso a banco de dados..

 

apesar q eu ainda não costumo usar, pelo fato de gostar de utilizar bastante stored procedures, então as queries que eu utilizo dentro das minhas classes soh executam stored procedures, mas isso é só uma maneira de q eu gosto de trabalhar

 

obs.: recomendo utilizar a extensão mysqli para mysql =D

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma vantagem de se utilizar classes para o acesso ao banco de dados, como essa q você está se referindo é o fato da abstração.

 

pois você pode acessar o mysql, sql server ,oracle etc, apenas mudando essa classe e não as outras classes de seu projeto, seria uma interface para o acesso a banco de dados..

 

apesar q eu ainda não costumo usar, pelo fato de gostar de utilizar bastante stored procedures, então as queries que eu utilizo dentro das minhas classes soh executam stored procedures, mas isso é só uma maneira de q eu gosto de trabalhar

 

obs.: recomendo utilizar a extensão mysqli para mysql =D

Lucas, obrigado pelo seu excelente complemento a este tópico, de maneira resumida e objetiva você fez eu realmente desejar utilizar, com toda certeza, a classe para manipular MySQL:

"abstração - pois você pode acessar o mysql, sql server ,oracle etc, apenas mudando essa classe e não as outras classes de seu projeto, seria uma interface para o acesso a banco de dados.."

 

Isso é algo excelente, pois já tive que modificar sistemas grandes e ficar um trabalho extremamente repetitivo só para alterar a manipulação com o Banco de Dados, e isso gasta muito tempo, agora sem dúvida, utilizando uma classe, não precisarei editar os diversos arquivos que formam o sistema, somente precisarei editar um único arquivo que é a classe do BD! Excelente mesmo.

 

"obs.: recomendo utilizar a extensão mysqli para mysql"

Ok, mais um voto a favor - rsrs. O problema mesmo é que está muito difícil achar uma classe completa para manipular o BD MySQL com a extensão MySQLi, e gostaria muito que alguém me indicasse uma, pois não sou nenhum expert em PHP, e apesar de não ser algo tão complicado para fazer, gostaria de uma classe completa e de qualidade para eu usar em todos meus projetos sem problemas (fazer a "migração" completa!).

 

Alguém indica uma que faça conexão automática, select, insert, update, delete e facilite a listagem while?

Ou então, podemos ir fazendo uma aqui com mysqli... o que vocês acham?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eh realmente..

 

fui ignorante em falar q num uso uma classe mais completa pelo fato de usar stored procedures,,

parei pra pensar um minuto aki..

e jah to complementando a minha classe de conexão ao banco..com uns métodos para manipular sql..mesmo q seja soh pra procedures..

posso reusar os códigos..no caso por exemplo..pra listar dados..num preciso ficar fazendo fetch_array em todas as classes..o método listar jah me retorna o array completo...

 

e outra coisa..

como disse o eibon, se o foco maior for uma abstração..aconselho usa PDO mesmo...

é muito boa..

apesar q eu insisto em utilizar a extensão mysqli, pelo fato de q qdo trabalho com PHP eu soh uso mysql..

e em comparação mysqli tem uma pequena vantagem em relação a performance,

eu fiz uma pequena pesquisa na web e uns testes..eu comento um poco no meu blog sobre isso.

 

http://www.freelancersbrasil.com/pdo-ou-mysqli/

Compartilhar este post


Link para o post
Compartilhar em outros sites

como disse o eibon, se o foco maior for uma abstração..aconselho usa PDO mesmo...

Não só pela abstração.PDOs são muito poderosos.Basta usar para saber.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. Agradeço pelas novas sugestões acrescentadas, pois eu não conhecia o PDO... mas vou pesquisar e ler bastante sobre isso.

 

Entretanto, enquanto eu não sei usar PDO, até pelo fato também (assim como o Lucas) que na maioria de minhas aplicações PHP eu utilizo MySQL, gostaria mesmo de ter uma classe com a extensão MySQLi para manipular o BD.

 

Então continuo minha busca, se alguém já souber de alguma, ou puder postar aqui a classe que utiliza, vou agradecer muito. ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.