Skip to content

Commit

Permalink
- Adicionada a possibilidade de pesquisa de campos com valor NULL;
Browse files Browse the repository at this point in the history
- Padrões charset UTF8 e TimeZone '-3:00';
- Correções em Insert_batch;
- Possibilidade de select() trazer a tabela toda;
- Melhoria nos exemplos;
  • Loading branch information
virgiliopontes committed Jun 24, 2018
1 parent aa9be44 commit 23db081
Show file tree
Hide file tree
Showing 2 changed files with 99 additions and 25 deletions.
50 changes: 44 additions & 6 deletions exemples/index.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,36 +21,74 @@ function __construct(){
CREATE TABLE IF NOT EXISTS `usuarios` ( `id` INT NOT NULL AUTO_INCREMENT , `nome` VARCHAR(120) NOT NULL , `email` VARCHAR(120) NOT NULL , `senha` VARCHAR(120) NOT NULL , `data_cad` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP , `ativo` TINYINT NOT NULL DEFAULT '1' , PRIMARY KEY (`id`)) ENGINE = InnoDB;"
); */
$this->mysql->set_table('usuarios');
echo 'Inserir apenas 1 Item';
$usuario = array(
'nome'=>'Virgilio Pontes',
'email'=>'[email protected]',
'senha'=>'password'
);
$id = $this->insert($usuario);

$campoWhere = array(
'id'=>$id //ID do Usuário
);
var_dump($campoWhere);
var_dump($this->select($campoWhere));


echo 'Array de itens';
$usuario = array(
array(
'nome'=>'Virgilio1',
'email'=>'[email protected]',
'senha'=>'password1'
),
array(
'nome'=>'Virgilio2',
'email'=>'[email protected]',
'senha'=>'password2'
),

);
var_dump($this->insert($usuario));

echo'Atualizar dados de um Item';
$usuario = array(
'nome'=>'Virgilio'
);

var_dump($this->update($usuario,$campoWhere));
var_dump($this->select($campoWhere));

echo 'Deletando um item';
var_dump($this->delete($campoWhere));
var_dump($this->select($campoWhere));

echo 'Campo Nulo e mais de um argumento';
$campoWhere = array(
'nome !='=>'NULL',
'senha'=>'password2'
);

var_dump($this->select($campoWhere));
//Campos Nulos
$campoWhere = array(
'nome ='=>'NULL'
);
var_dump($this->select($campoWhere));

echo 'Toda a Tabela';
var_dump($this->select());
}

function insert($array){

$result = $this->mysql->insert($array);
if(isset($array[0])){
$result = $this->mysql->insert_batch($array);
}else{
$result = $this->mysql->insert($array);
}

return $result; //ID || false
}

function select($array){
function select($array=''){

$result = $this->mysql->select($array);
return $result; //array
Expand Down
74 changes: 55 additions & 19 deletions src/MySQLWizard.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,29 @@ function __construct($database_sets=''){
'host'=>'127.0.0.1',
'user'=>'root',
'password'=>'',
'database'=>'teste'
'database'=>'teste',
'charset'=>'utf8',
'country'=>'Brazil'
);
}
$this->table = '';
$this->connect = $this->connect();
$this->connect();
}

private function connect(){
$connect = mysqli_connect($this->database_sets->host,$this->database_sets->user,$this->database_sets->password,$this->database_sets->database);
$this->connect = $connect;
if(isset($this->database_sets->charset)){
$this->connect->set_charset($this->database_sets->charset);
}

if(isset($this->database_sets->country)&&$this->database_sets->country=='Brazil'){
//Seta o tipo de Carcateres do Banco de Dados para UTF8
$this->query("SET time_zone = '-3:00'");
$this->query('SET sql_mode = ""');
$this->query('SET NAMES utf8');
}

return $connect;
}

Expand Down Expand Up @@ -61,7 +75,7 @@ function insert($dados,$tabela=''){
$campos.=') ';
$valores.=') ';
$query.= $campos.'VALUES'.$valores;

$result = $this->query($query);
return $result==false ? $result : mysqli_insert_id($this->connect);

Expand All @@ -79,22 +93,23 @@ function insert_batch($dados,$tabela=''){
}
$this->verificaTabela($tabela);

$query = "INSERT INTO".$tabela;
$query = "INSERT INTO ".$tabela;

$campos =' (';
foreach ($dados[0] as $key=>$value){
$campos.= $key.',';
}
$campos = $this->removeVirgula($campos);
$campos.=') ';


$valores = '';
foreach($dados as $key=>$value){
$valores =' (';
$valores .=' (';
foreach ($value as $key=>$value){
$valores.= $this->isNumeric($value).',';
}
$valores = $this->removeVirgula($valores);
$valores.='), ';
$valores.='),';
}
$valores = $this->removeVirgula($valores);

Expand All @@ -105,22 +120,22 @@ function insert_batch($dados,$tabela=''){
}

/**
* @param array $campo Array com o campo e valor que deve ser usado para buscar os dados no banco
* @param array $campoWhere Array com o campo e valor que deve ser usado para buscar os dados no banco, se vazio retorna toda a tabela
* @param string $tabela tabela que comtem os dados que devem ser selecionados
* @return array Retorna um Array de objetos
*/
function select($campoWhere,$tabela=''){
function select($campoWhere='',$tabela=''){
if($tabela==''){
$tabela = $this->table;
}
$this->verificaTabela($tabela);

$query = "SELECT * FROM ".$tabela." WHERE ";
$query = "SELECT * FROM ".$tabela;

if(is_array($campoWhere)){
$query.=$this->make_where($campoWhere);
}elseif(is_string($campoWhere)){
$query.=$campoWhere;
$query.=" WHERE ".$this->make_where($campoWhere);
}elseif(is_string($campoWhere)&&$campoWhere!=''){
$query.=" WHERE ".$campoWhere;
}

$result = $this->query($query);
Expand All @@ -132,12 +147,13 @@ function select($campoWhere,$tabela=''){
$array[] = (object)$dados;
}

return $array;
return isset($array) ? $array : array();
}

/**
* Atualiza atravez do $campoWhere os dados de uma determianda linha no banco de dados
* @param array $dados Colunas e valores que devem ser atualizados
* @param array $campoWhere Coluna e valor que deve ser utilizado no WHERE
* @param string $tabela tabela que comtem os dados que devem ser atualizados
* @return bool
*/
Expand All @@ -160,6 +176,7 @@ function update($dados,$campoWhere,$tabela=''){
$valores = $this->removeVirgula($valores);

$query.= $valores." WHERE ".$campoWhereS." = ".$this->isNumeric($campoWhere[$campoWhereS]);

$result = $this->query($query);
return $result;

Expand All @@ -181,14 +198,24 @@ function delete($campoWhere,$soft='',$tabela=''){
$result = $this->query($query);
return $result;
}


/**
* Verifica se a String é numeral, se não for adiciona "" para INSERT e SELECT
* @param string $value = 'Maria' || '1' || 'NOW()'
* @return string '"Maria"' || '1' || 'NOW()'
*/
private function isNumeric($value){
if(!is_numeric($value)&&!is_null($value)){
if(!is_numeric($value)&&!is_null($value)&&$value!='NOW()'){
$value = "'".$value."'";
}
return $value;
}


/**
* Remove o ultimo caracter de uma string, utilizado para remover a virgula dos INSERT
* @param string $string = 'Virgilio,'
* @return string 'Virgilio'
*/
private function removeVirgula($string){
return substr($string,0, strlen($string)-1);
}
Expand All @@ -200,10 +227,19 @@ private function make_where($array){
$where = '';
foreach($array as $key=>$value){
$keys = explode(' ',$key);
$campo = $keys[0];
$operador = isset($keys[1])&&is_array($keys) ? ' '.$keys[1].' ' : ' = ' ;

if($where!=''){
$where.= ' and ';
$where.= ' AND ';
}

if($value!='NULL'){
$where .= $campo.$operador.$this->isNumeric($value);
}else{
$where .= '( '.$campo.($operador==' = ' ? ' IS ' : ' IS NOT ').$value.' )';
}
$where .= $keys[0].(isset($keys[1]) ? $keys[1]:'=').$this->isNumeric($value);

}

return $where;
Expand Down

0 comments on commit 23db081

Please sign in to comment.