From 23db0814d96c7665a398b280a9d7cf038c5589ce Mon Sep 17 00:00:00 2001 From: Virgilio Pontes Date: Sun, 24 Jun 2018 00:02:39 -0300 Subject: [PATCH] =?UTF-8?q?-=20Adicionada=20a=20possibilidade=20de=20pesqu?= =?UTF-8?q?isa=20de=20campos=20com=20valor=20NULL;=20-=20Padr=C3=B5es=20ch?= =?UTF-8?q?arset=20UTF8=20e=20TimeZone=20'-3:00';=20-=20Corre=C3=A7=C3=B5e?= =?UTF-8?q?s=20em=20Insert=5Fbatch;=20-=20Possibilidade=20de=20select()=20?= =?UTF-8?q?trazer=20a=20tabela=20toda;=20-=20Melhoria=20nos=20exemplos;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exemples/index.php | 50 ++++++++++++++++++++++++++---- src/MySQLWizard.php | 74 +++++++++++++++++++++++++++++++++------------ 2 files changed, 99 insertions(+), 25 deletions(-) diff --git a/exemples/index.php b/exemples/index.php index a060606..baca4f1 100644 --- a/exemples/index.php +++ b/exemples/index.php @@ -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'=>'vrgiliocpontes@outlook.com', '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'=>'vrgiliocp@outlook.com', + 'senha'=>'password1' + ), + array( + 'nome'=>'Virgilio2', + 'email'=>'vrgiliocpo@outlook.com', + '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 diff --git a/src/MySQLWizard.php b/src/MySQLWizard.php index e87ad36..d050c61 100644 --- a/src/MySQLWizard.php +++ b/src/MySQLWizard.php @@ -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; } @@ -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); @@ -79,7 +93,7 @@ function insert_batch($dados,$tabela=''){ } $this->verificaTabela($tabela); - $query = "INSERT INTO".$tabela; + $query = "INSERT INTO ".$tabela; $campos =' ('; foreach ($dados[0] as $key=>$value){ @@ -87,14 +101,15 @@ function insert_batch($dados,$tabela=''){ } $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); @@ -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); @@ -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 */ @@ -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; @@ -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); } @@ -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;