O eterno tema com PHP e MySQL

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) MySQL

Farei 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 GitHub

Bom código para todos!

Source: https://habr.com/ru/post/pt420697/


All Articles