Olá pessoal! Certamente, todos os que escrevem muito e constantemente em
PHP se deparam com a questão de otimizar e simplificar consultas aos
bancos de dados MySQL . Alguém já escreveu classes / procedimentos convenientes para si, alguém encontrou algo nos espaços abertos da rede.
Como meus scripts em
PHP estão começando a se reduzir cada vez mais a uma tarefa - buscar em um banco de dados e transmitir esses dados para scripts Java do cliente, facilitei a criação de uma classe de banco de dados conveniente (para mim, é claro)
MySQLFarei uma reserva
imediatamente - a classe
mqsli embutida é bastante conveniente e funcional, mas diante das mesmas perguntas
todos os dias seria estranho não aliviar um pouco o seu destino.
A classe
exDBase é oferecida à sua atenção, é essencialmente um invólucro para a classe
mysqli . Faça uma reserva imediatamente - sou programador iniciante e estou pronto para receber muitas críticas pelo código escrito em comentários ou mensagens pessoais. Eu realmente não possuo o RegExp, por exemplo, o que simplificaria bastante o código, talvez haja outras reclamações. Mas, no entanto ...
A biblioteca inteira está contida em um arquivo -
exdbase.php . Este arquivo contém a
descrição da classe
exDBase . Para começar a trabalhar, basta baixar o arquivo, registre a seguinte linha:
require_once ('exdbase.php')
Primeiro, crie uma instância da classe, é muito simples:
$DB = new exDBase (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if ($DB->error) echo " : $DB->error";
A propriedade
$ DB-> error sempre terá o erro da última operação (se houve um erro) ou estará vazia.
O formato é quase idêntico a instanciar a classe
mysqli . Naturalmente, em vez das constantes indicadas no exemplo, você precisa substituir os valores reais pelo host, nome de usuário, senha e nome do banco de dados.
Agora você pode praticar. Suponha que tenhamos um banco de dados pronto e que tenha uma tabela de
clientes com campos:
ID - número único, incremento automático
NAME - nome do cliente
IDADE - idade do cliente
VALOR - quantidade de compras
BLOCKED - booleano, cliente bloqueado ou ativo
CONFIGURAÇÕES - parâmetros pessoais, os armazenamos no formato JSON
Banco de dados de consulta
Vamos obter todas as entradas da tabela '
clients '. Existe um método
fetchArray para
isso .
$res = $DB->fetchArray ('clients'); // if ($res) foreach ($res as $client) echo print_r ($client, true); //
E se queremos obter apenas o primeiro registro da solicitação? Existe um método
fetchFirst para
isso .
$res = $DB->fetchFirst ('clients'); // if ($res) echo print_r ($client, true); //
Porém, dificilmente precisamos obter todos os registros da tabela, sempre há condições de seleção (o campo WHERE no comando SELECT). O que fazemos? Sim, muito simples. Este é o segundo argumento para os métodos fetchArray ou fetchFirst.
Suponha que desejemos selecionar todos os clientes chamados John. Em nossa classe, isso pode ser feito de duas maneiras.
O primeiro é simplesmente definir a condição com uma sequência no formato "NAME = 'John'"
$res = $DB->fetchArray ('clients', "NAME = 'John'");
O segundo é definir a condição em uma matriz:
$res = $DB->fetchArray ('clients', array ("NAME" => "John"));
E se houver mais condições? Por exemplo, a idade deve ter 30 anos? Fácil:
$res = $DB->fetchArray ('clients', array ("NAME" = "John", "AGE" => 30));
Dessa forma, você pode combinar vários termos de pesquisa. Mas igualdade ... E se queremos encontrar todos os clientes com o nome John com mais de 25 anos? Aqui prefixos especiais vêm para o resgate:
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25));
Além de "> =", você pode usar: ">", "<", "<=", "! =", "<>", "! =". Assim, você pode criar consultas de vários graus de complexidade e sempre obter as respostas certas.
O terceiro parâmetro dos métodos de recuperação de banco de dados são os campos da tabela. Eles podem ser especificados como uma sequência (por exemplo: “NOME, IDADE”) ou como uma matriz: matriz (“NOME”, “IDADE”).
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"));
O quarto e último parâmetro para os métodos de busca fetchArray e fetchFirst é a ordem de classificação. Também é especificado por uma sequência (tipo: “ID ASC, NOME DESC”) ou uma matriz de array (“ID” => “ASC”, “NAME” => “DESC”).
$res = $DB->fetchArray ('clients', array ("NAME" = "John", ">=AGE" => 25), array ("NAME", "AGE"), array ("ID" => "ASC", "NAME" => "DESC"));
Bem, terminando com os dados solicitados - e como limitar a seleção? Por exemplo, apenas as 10 primeiras entradas são necessárias?
Isso é feito usando o método setLimit (), assim:
$DB->setLimit (10); $res = $DB->fetchArray ('clients', "NAME = 'John'");
O método setLimit () funciona em apenas uma solicitação, após a qual os limites são redefinidos.
Inserir novos dados
Existe um método
insert () para escrever novos dados.
$id = $DB->insert ('clients', array ("NAME" => 'Peter', "AGE" => 27, "AMOUNT" => 1000.25));
Retorna o valor da chave primária de incremento automático (se uma for especificada na tabela). No nosso caso, ele retornará o ID do registro inserido.
Atualização de dados
Os dados são atualizados usando o método
update () .
$DB->update ('clients', array ("NAME" => 'Peter'), array ("AGE" => 30, "AMOUNT" => 2000.25));
Atualizamos todos os registros em que o nome (campo NAME) é 'Peter'. O segundo argumento para o método é a condição de seleção, exatamente no mesmo formato que WHERE para SELECT. Bem, o terceiro argumento para o método são os próprios dados. Agora, todos esses registros com o nome 'Peter' terão 30 anos e a soma será 2000.25.
Exclusão de dados
Se você já entendeu a lógica da biblioteca, a remoção será muito simples. O método é chamado
delete () .
$DB->delete ('clients', array ("NAME" => 'Peter'); // 'Peter' $DB->delete ('clients', array (">AGE" => '20'); // 20.
Aqui está uma primeira excursão tão breve na biblioteca exDBase. Há uma série de outros recursos mais avançados, mas mais em outro momento.
UPD:
Você pode baixar o arquivo no GitHubBom código para todos!