89bsilva / my-database
Para conexão e operações simples em base de dados MySQL
Requires
- php: ^7.2
README
MyDatabase é uma ferramenta desenvolvida em PHP para realizar operações muito simples em base de dados MySQL
Instalação
$ composer require 89bsilva/my-database
Primeiro Passo
Importar o autoload do composer
<?php require './vendor/autoload.php';
Criando o obejto MyDatabase
Ao instânciar a classe você deve passar dois parâmetros:
<?php $primeiroParametro = Array( [0] => "enderecoServidor" // Obrigatório [1] => "numeroDaPorta" // Obrigatório ); # ou $primeiroParametro = (string) "enderecoServidor"; //Nesse caso o número da porta será 3306.
<?php $segundoParametro = Array( [0] => "nomeDoBanco" // Obrigatório [1] => "usuario" // Obrigatório [2] => "senha" // Opcional - Valor Padrão : "" [3] => "charset" // Opcional - Valor Padrão : "utf8" [4] => "collation" // Opcional - Valor Padrão : "general_ci" [5] => "engine" // Opcional - Valor Padrão : "InnoDB" );
Exemplos:
Criando conexão no servidor: "localhost", porta: "3308", banco: "loja", usuário: "admin", senha: "123", charset: "utf8mb4", collation: "unicode_ci" e engine: "MyISAM"
<?php $db = new MyDatabase( Array( "localhost", "3308" ), Array( "loja", "admin", "123", "utf8mb4", "unicode_ci", "MyISAM" ) );
Criando conexão no servidor: "localhost", porta: "3306", banco: "loja", usuário: "admin", senha: "", charset: "utf8", collation: "general_ci" e engine: "InnoDB"
<?php $db = new MyDatabase( "localhost", Array( "loja", "admin" ) );
MyDatabase
Métodos da classe MyDatabase
table($tabela)
@param string $tabela Nome da tabela que deseja realizar alguma(s) alteração(ões) @return Objeto da classe Table
insert($dados)
@param array $dados Dados que será(ão) inserido(s) @return Objeto da classe Insert
select($coluna [, $coluna, $...])
@param string $coluna Declaração com a(s) coluna(s) que será(ão) selecionada(s) @return Objeto da classe Select
update($tabela)
@param string $tabela Nome da tabela que contém o(s) registro(s) será(ão) atualizado(s) @return Objeto da classe Update
delete($tabela)
@param string $tabela Nome da tabela que contém o(s) registro(s) será(ão) deletado(s) @return Objeto da classe Delete
Table
Métodos da classe Table
addColumn($coluna)
@param string $coluna Nome da coluna que será adicionada @return Objeto atual
dropColumn($coluna)
@param string $coluna Nome da coluna que será removida @return bool true se deletou a coluna false caso contrário
changeColumn($coluna, $novoNome)
@param string $coluna Nome da coluna que será modificada @param string $novoNome (Opcional) Novo nome da coluna que será modificada @return Objeto atual
showColumn($coluna)
@param string $coluna Nome da coluna que será obtida as informações @return array
<?php // Caso a tabela ou a coluna não exista na tabela um array vazio será retornado // Se a coluna existir será retornado um array com as informações dessa coluna array( 'Field' =>'nome da coluna', 'Type' => 'tipo da coluna', 'Null' => 'se a coluna pode receber valor nulo', 'Key' => 'indice presente na coluna', 'Default' => 'valor padro da coluna', 'Extra' => 'extra' );
showColumns()
@return array
<?php // Caso não exista a tabela um array vazio será retornado // Se a tabela existir será retornado um array com as informações de todas as colunas dessa tabela array( 0 => array( 'Field' => 'nome da coluna', 'Type' => 'tipo da coluna', 'Null' => 'se a coluna pode receber valor nulo', 'Key' => 'indice presente na coluna', 'Default' => 'valor padro da coluna', 'Extra' => 'extra' ), 1 => array( 'Field' => 'nome da coluna', 'Type' => 'tipo da coluna', 'Null' => 'se a coluna pode receber valor nulo', 'Key' => 'indice presente na coluna', 'Default' => 'valor padro da coluna', 'Extra' => 'extra' ), 2 => array( 'Field' => 'nome da coluna', 'Type' => 'tipo da coluna', 'Null' => 'se a coluna pode receber valor nulo', 'Key' => 'indice presente na coluna', 'Default' => 'valor padro da coluna', 'Extra' => 'extra' ), ... );
int($tamanho)
@param int $tamanho Tamanho máximo para coluna @return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: INT e tamanho: $tamanho para coluna que será adicionada ou alterada
bool()
@return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: TINYINT e tamanho: 1 para coluna que será adicionada ou alterada
float($precisao)
@param int|string $precisao Precisão para o armazenamento do tipo Float @return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: FLOAT e com precisão: $precisao para coluna que será adicionada ou alterada
double($precisao)
@param int|string $precisao Precisão para o armazenamento do tipo Double @return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: DOUBLE e com precisão: $precisao para coluna que será adicionada ou alterada
text()
@return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: TEXT para coluna que será adicionada ou alterada
mediumtext()
@return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: MEDIUMTEXT para coluna que será adicionada ou alterada
longtext()
@return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: LONGTEXT para coluna que será adicionada ou alterada
varchar($tamanho)
@param int $tamanho Tamanho máximo para coluna @return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: VARCHAR e tamanho: $tamanho para coluna que será adicionada ou alterada
timestamp()
@param int $tamanho Tamanho máximo para coluna @return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define o tipo: TIMESTAMP para coluna que será adicionada ou alterada
addTimes($ptBR)
@param bool $ptBR (Opcional) Caso seja true os nomes das colunas serão (criado_em, atualizado_em) @return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Adiciona na tabela duas colunas do tipo timestamp (created_at, updated_at). As colunas terão valor padrão CURRENT_TIMESTAMP A coluna updated_at será atualizada automáticamente com CURRENT_TIMESTAMP quando a tabela for atualizada
default($valorPadrao)
@param int|string $valorPadrao Valor padrão da coluna que será criada/alterada @return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método
after($coluna)
@param int|string $coluna Nome da coluna que antecede a nova coluna a ser adicionada ou movida @return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método
autoIncrement()
@return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define que coluna a ser adicionada/alterada será auto encrementada.
notNull()
@return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define que o valor armazenado na coluna a ser adicionada/alterada não pode ser nulo.
primary()
@return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define a coluna a ser adicionada/alterada será chave primária.
unique()
@return Objeto atual Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método Define que o valor armazenado na coluna a ser adicionada/alterada será unico na tabela.
create($mostrarDeclaracao)
@param bool $mostrarDeclaracao (Opcional, Padrão: false) Sinaliza se a declaração que será executada irá retornar na resposta @return array Obs.: addColumn() DEVE ser chamado antes desse método
<?php array ( // Lista com a(s) tabela(s) que não foi(ram) criada(s) 'error' => array ( 'nome da tabela com erro' => 'mensagem do erro', 'nome da tabela com erro' => 'mensagem do erro', ... ), // Lista com a(s) tabela(s) que foi(ram) criada(s) 'success' => array ( 'nome da tabela criada' => 'mensagem', 'nome da tabela criada' => 'mensagem', ... ), // Só existirá esse índice se $mostrarDeclaracao = true 'statement' => array ( 'nome da tabela' => 'declaração SQL', 'nome da tabela' => 'declaração SQL', ... ), );
alter($mostrarDeclaracao)
@param bool $mostrarDeclaracao (Opcional, Padrão: false) Sinaliza se a declaração que será executada irá retornar na resposta @return array Obs.: addColumn() ou changeColumn() DEVE ser chamado antes desse método
<?php array ( // Lista com a(s) tabela(s) que não foi(ram) criada(s) 'error' => array ( 'nome da tabela com erro' => array( 'nome da coluna' => 'mensagem do erro', 'nome da coluna' => 'mensagem do erro', ... ), 'nome da tabela com erro' => array( 'nome da coluna' => 'mensagem do erro', 'nome da coluna' => 'mensagem do erro', ... ), ... ), // Lista com a(s) tabela(s) que foi(ram) criada(s) 'success' => array ( 'nome da tabela alterada' => array( 'nome da coluna' => 'mensagem', 'nome da coluna' => 'mensagem', ... ), 'nome da tabela alterada' => array( 'nome da coluna' => 'mensagem', 'nome da coluna' => 'mensagem', ... ), ... ), // Só existirá esse índice se $mostrarDeclaracao = true 'statement' => array ( 'nome da tabela' => array( 'nome da coluna' => 'declaração SQL', 'nome da coluna' => 'declaração SQL', ... ), 'nome da tabela' => array( 'nome da coluna' => 'declaração SQL', 'nome da coluna' => 'declaração SQL', ... ), ... ), );
drop()
@return bool Deleta a tabela
clean()
@return bool Remove todos os registros da tabela
Exemplos:
- Criar tabela: "cliente" com:
- coluna: id, tipo: int, tamanho: 11, não pode ter valor nulo, auto incrementado e chave primária
- coluna: nome, tipo: varchar, tamanho: 25 e não pode ter valor nulo
- coluna: cidade, tipo: varchar, tamanho: 25 e não pode ter valor nulo
- coluna: CPF, tipo: int, tamanho: 11, não pode ter valor nulo e valor único
- coluna: preferencial, tipo: tinyint, tamanho: 1, pode ter valor nulo e valor padrão 0
<?php $tbCliente = $db->table("cliente") ->addColumn("id")->int(11)->notNull()->autoIncrement()->primary() ->addColumn("nome")->varchar(25)->notNull() ->addColumn("cidade")->varchar(25)->notNull() ->addColumn("CPF")->varchar(11)->notNull()->unique() ->addColumn("preferencial")->bool()->default(0) ->create(true); // Valor em $tbClientte em caso de sucesso array ( 'error' => array (), 'success' => array ('cliente' => "The 'cliente' table was created successfully!!!"), 'statement' => array ( 'cliente' => "USE `loja`; CREATE TABLE IF NOT EXISTS `loja`.`cliente` (`id` int(11) AUTO_INCREMENT NOT NULL, `nome` varchar(25) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL, `cidade` varchar(25) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL, `CPF` varchar(11) NOT NULL, `preferencial` tinyint(1) DEFAULT '0', PRIMARY KEY (`id`), UNIQUE INDEX `id_UNIQUE` (`id` ASC), UNIQUE INDEX `CPF_UNIQUE` (`CPF` ASC)) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8;", ), );
- Criar tabela: "produto" com:
- coluna: id, tipo: int, tamanho: 11, não pode ter valor nulo, auto incrementado e chave primária
- coluna: codigo, tipo: int, tamanho: 11, não pode ter valor nulo e valor único
- coluna: descricao, tipo: varchar, tamanho: 100 e não pode ter valor nulo
- coluna: preco, tipo: float, precisão: 7,2, não pode ter valor nulo
- coluna: quantidade, tipo: int, tamanho: 11 e não pode ter valor nulo
- coluna: criado_em, tipo: timestamp e como valor padrão o timestamp atual
- coluna: atualizado_em, tipo: timestamp e como valor padrão o timestamp atual
- Criar tabela: "usuario" com:
- coluna: id, tipo: int, tamanho: 11, não pode ter valor nulo, auto incrementado e chave primária
- coluna: nome, tipo: varchar, tamanho: 25 e não pode ter valor nulo
- coluna: email, tipo: varchar, tamanho: 50, não pode ter valor nulo e com valor único
- coluna: ativo, tipo: tinyint, tamanho: 1, pode ter valor nulo e valor padrão 1
<?php $criar = $db->table("produto") ->addColumn("id")->int(11)->notNull()->autoIncrement()->primary() ->addColumn("codigo")->int(11)->notNull()->unique() ->addColumn("descricao")->varchar(100)->notNull() ->addColumn("preco")->float("7,2")->notNull() ->addColumn("quantidade")->int(11)->notNull() ->addTimes(true) // TRUE passado para criar as colunas criado_em e atualizado_em ->table("usuario") ->addColumn("id")->int(11)->notNull()->autoIncrement()->primary() ->addColumn("nome")->varchar(25)->notNull() ->addColumn("emil")->varchar(50)->notNull()->unique() ->addColumn("ativo")->bool()->default(1) ->create(); // Valor em $criar em caso de sucesso array ( 'error' => array (), 'success' => array ( 'produto' => "The 'produto' table was created successfully!!!", 'usuario' => "The 'usuario' table was created successfully!!!", ) );
Realizando alterações na tabela usuario: Alterar o nome da coluna emil para email, mudar o tamanho dela de varchar(50) para varchar(100) e adicionar após a coluna email a coluna: senha, tipo: varchar, tamanho: 10, não pode ter valor nulo
$alteracao = $db->table("usuario")->changeColumn("emil", "email")->varchar(100) ->addColumn("senha")->varchar(10)->notNull()->after("email") ->alter(true); // Valor em $alteracao em caso de sucesso array ( 'error' => array (), 'success' => array ( 'usuario' => array( "email" => "The 'email' column was changed successfully!!!", "senha" => "The 'senha' column was added successfully!!!" ) ), 'statement' => array ( 'usuario' => array( "email" => "ALTER TABLE `usuario` CHANGE `emil` `email` varchar(100) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL, DROP INDEX `emil_UNIQUE`, ADD UNIQUE INDEX `email_UNIQUE` (`email` ASC)", "senha" => "ALTER TABLE `usuario` ADD `senha` varchar(10) CHARACTER SET 'utf8' COLLATE 'utf8_general_ci' NOT NULL AFTER `email`" ) ), );
Deletar a tabela: "usuario"
<?php $deletado = $db->table("usuario")->drop(); // Valor em $deletado em caso de sucesso true
Insert
into($tabela)
@param string $tabela Nome da tabela que deseja onde será realizado a inserção de dados @return Objeto atual
execute()
@return int O número de registros inseridos
Exemplos:
Cadastro de UM cliente na tabela "cliente"
<?php $cliente = Array( "nome" => "Nome do Vendedor", "cidade" => "São Paulo", "CPF" => "12345678900" ); $resposta = $db->insert($cliente)->into("cliente")->execute(); // Valor em $resposta em caso de sucesso 1
Cadastro de TRÊS produtos na tabela "produto"
<?php $produtos = Array( Array( "codigo" => 123456, "descricao" => "Teclado", "preco" => 59.99, "quantidade" => 5 ), Array( "codigo" => 234567, "descricao" => "Monitor", "preco" => 199.90, "quantidade" => 2 ), Array( "codigo" => 890123, "descricao" => "Mouse", "preco" => 45.50, "quantidade" => 5 ) ); $resposta = $db->insert($produtos)->into("produto")->execute(); // Valor em $resposta em caso de sucesso 2
Select
from($tabela)
@param string $tabela Tabela onde a consulta será realizada @return Objeto atual
from($tabela)
@param string $tabela Tabela onde a consulta será realizada @return Objeto atual
where($coluna)
@param string $coluna Coluna utilizada para comparar @return Objeto atual Veja como construir a cláusula WHERE
limit($limite, $deslocamento)
@param int $limite Limite para consulta @param int $deslocamento Início da consulta @return Objeto atual Obs.: Se esse método não for chamada antes de executar a consulta o limite padrão será 100 e o início da consulta padrão será 0
order($coluna, $ordenar)
@param string $coluna Nome(s) da(s) coluna(s) pela qual a consulta será ordenada @param string $ordenar Direção da ordenação (Padrão: ASC) @return Objeto atual
execute()
@return Array Executa o select, retorna uma lista com os registros do SELECT ou array vazio
Exemplos:
Buscar na tabela "produto" TODOS os dados de produtos com QUANTIDADE MAIOR OU IGUAL 1 e com PREÇO MENOR que R$60 e ordernar por preço
<?php $produtos = $db->select("*")->from("produto")->where("quantidade")->biggerEqual(1)->and("preco")->less(60)->order("preco")->limit(0)->execute(); // Valor em $produtos em caso de sucesso Array( 0 => Array( "id" => "2", "codigo" => "890123", "descricao" => "Mouse", "preco" => "45.50", "quantidade" => "5", "criado_em" => "2020-05-19 11:02:53", "atualizado_em" => "2020-05-19 11:02:53", ), 0 => Array( "id" => "1", "codigo" => "123456", "descricao" => "Teclado", "preco" => "59.99", "quantidade" => "5", "criado_em" => "2020-05-19 11:02:53", "atualizado_em" => "2020-05-19 11:02:53", ) );
Buscar na tabela "cliente" o NOME dos clientes da cidade de São Paulo. No máximo 100 registros (limite padrão).
<?php $clientes = $db->select("nome")->from("cliente")->where("cidade")->equals("São Paulo")->execute(); // Valor em $clientes em caso de sucesso Array( 0 => Array("nome" => "Nome do Vendedor") );
UPDATE
set($dadosAtualizados)
@param array $dadosAtualizados Array associativo com o(s) dado(s) que será(ão) atualizado(s) @return Objeto atual
where($coluna)
@param string $coluna Coluna utilizada para comparar @return Objeto atual Veja como construir a cláusula WHERE
limit($limite, $deslocamento)
@param int $limite Limite para atualização @param int $deslocamento Início da atualização @return Objeto atual Obs.: Se esse método não for chamada antes de executar a atualização o limite padrão será 1 e o início da consulta padrão será 0
execute()
@return int Retorna o número de linhas que a atualização afetou
Exemplo:
Atualizar na tabela "produto" a quantidade do produto com código igual a 123456 para 4
<?php $novoValor = Array("quantidade" => 4); $atualizacao = $db->update("produto")->set($novoValor)->where("codigo")->equals(123456)->execute(); // Valor em $atualizacao em caso de sucesso 1
DELETE
where($coluna)
@param string $coluna Coluna utilizada para comparar @return Objeto atual Veja como construir a cláusula WHERE
limit($limite, $deslocamento)
@param int $limite Limite para exclusão @param int $deslocamento Início da exclusão @return Objeto atual Obs.: Se esse método não for chamada antes de executar a exclusão o limite padrão será 1 e o início da consulta padrão será 0
execute()
@return int Retorna o número de linhas que o delete afetou
Exemplo:
Deletar na tabela "produto" o produto com código igual a 234567
<?php $exclusao = $db->delete("produto")->where("codigo")->equals(234567)->execute(); // Valor em $exclusao em caso de sucesso 1
WHERE
where($coluna)
@param string $coluna Coluna utilizada para comparar @return Objeto atual
between($valor1, $valor2)
@param string | int $valor1 Primeiro valor do intervalo @param string | int $valor2 Segundo valor do intervalo @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
notBetween($valor1, $valor2)
@param string | int $valor1 Primeiro valor do intervalo @param string | int $valor2 Segundo valor do intervalo @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
equals($valor)
@param string | int $valor Valor que será comparado utilizando o operador = @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
notEquals($valor)
@param string | int $valor Valor que será comparado utilizando o operador != @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
different($valor)
@param string | int $valor Valor que será comparado utilizando o operador <> @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
less($valor)
@param string | int $valor Valor que será comparado utilizando o operador < @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
lessEqual($valor)
@param string | int $valor Valor que será comparado utilizando o operador <= @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
bigger($valor)
@param string | int $valor Valor que será comparado utilizando o operador > @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
in($lista)
@param array $lista Valores que serão comparados
@return Objeto atual
É uma abreviação para várias condições OR onde o obejtivo são valores que estão na lista
Obs.: where() DEVE ser chamado antes desse método
notIn($lista)
@param array $lista Valores que serão comparados
@return Objeto atual
É uma abreviação para várias condições OR onde o obejtivo são valores que NÃO estão na lista
Obs.: where() DEVE ser chamado antes desse método
isNull()
@return Objeto atual
Obejtiva registro(s) com valor NULL
Obs.: where() DEVE ser chamado antes desse método
isNotNull()
@return Objeto atual
Obejtiva registro(s) com valor diferente de NULL
Obs.: where() DEVE ser chamado antes desse método
like($valor)
@param string $valor Valor que será comparado utilizando o coringa "%" antes e depois de valor: "%$valor%" @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
likeStart($valor)
@param string $valor Valor que será comparado utilizando o coringa "%" depois de valor: "$valor%" @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
likeEnd($valor)
@param string $valor Valor que será comparado utilizando o coringa "%" antes de valor: "%$valor" @return Objeto atual Obs.: where() DEVE ser chamado antes desse método
likeStartEnd($valor1, $valor2)
@param string $valor1 Primeiro valor da comparação @param string $valor2 Segundo valor da comparação @return Objeto atual A comparação será realizada utilizando o coringa "%" entre valor1 e valor2: "$valor1%$valor2" Obs.: where() DEVE ser chamado antes desse método
and($coluna)
@param string $coluna Coluna da nova condição @return Objeto atual Inicia uma nova condição de comparação com o operador AND Obs.: where() e algum método de comparação "between(), notBetween(), equals(), ..." DEVEM ser chamados antes desse método
or($coluna)
@param string $coluna Coluna da nova condição @return Objeto atual Inicia uma nova condição de comparação com o operador OR Obs.: where() e algum método de comparação "between(), notBetween(), equals(), ..." DEVEM ser chamados antes desse método
Autor
Bruno Silva Santana - ibrunosilvas@gmail.com - https://github.com/ibrunosilvas
Licença
MyDatabase está licenciado sob a licença MIT - consulte o arquivo LICENSE
para mais detalhes.