Guest User

Untitled

a guest
Feb 12th, 2019
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 KB | None | 0 0
  1. <?php
  2. /**
  3. * Classe de Banco de Dados com conexão e métodos para cadastro, alteração e exclusão dinâmicos
  4. * @package Sql
  5. */
  6. class Sql{
  7.  
  8. public $conn;
  9.  
  10. private $server = 'localhost';
  11. private $username = '';
  12. private $password = '';
  13. private $database = '';
  14.  
  15. /*********************************************************************************************************/
  16. /**
  17. * Método usado para abrir o banco de dados com os atributos private supradeclarados
  18. * @metodo conecta
  19. */
  20. public function conecta(){
  21.  
  22. return $this->conn = mysqli_connect($this->server, $this->username, $this->password, $this->database);
  23.  
  24. }
  25. /*********************************************************************************************************/
  26. /**
  27. * Método Construtor que chama o método conecta() para abrir o banco de dados
  28. * @metodo __construct
  29. */
  30. public function __construct(){
  31.  
  32. return $this->conecta();
  33.  
  34. }
  35. /*********************************************************************************************************/
  36. /**
  37. * Método destrutor que fecha a conexão previamente aberta
  38. * @metodo __destruct
  39. */
  40. public function __desconstruct(){
  41.  
  42. return mysqli_close($this->conn);
  43.  
  44. }
  45. /*********************************************************************************************************/
  46. /**
  47. * Método que executa qualquer instrução no banco de dados em uso
  48. * @metodo query
  49. */
  50. public function query($query){
  51.  
  52. $this->conecta();
  53. return mysqli_query($this->conn, $query);
  54.  
  55. }
  56.  
  57. /*********************************************************************************************************/
  58. /**
  59. * Método que retorna um registro fatiado em array
  60. * @metodo query
  61. */
  62. public function select($query){
  63.  
  64. return $this->arrays($query, true);
  65.  
  66. }
  67.  
  68. /*********************************************************************************************************/
  69. /**
  70. * Método que retorna o último ID gerado
  71. * @metodo query
  72. */
  73. public function id(){
  74.  
  75. return mysqli_insert_id($this->conn);
  76.  
  77. }
  78. /*********************************************************************************************************/
  79. /**
  80. * Método que recebe o nome da tabela como parâmetro cria uma consulta para retornar todos os campos de uma tabela com seus respectivos datatypes. Transforma esse resultado em um array e retorna este array
  81. * @metodo fields
  82. */
  83. public function fields($table){
  84.  
  85. $fields = array();
  86.  
  87. $result = $this->query("SHOW COLUMNS FROM tbl_".strtolower($table));
  88.  
  89. while($row = $result->fetch_object()){
  90.  
  91. array_push($fields, $row);
  92.  
  93. }
  94.  
  95. return $fields;
  96.  
  97. }
  98. /*********************************************************************************************************/
  99. /**
  100. * Método que recebe uma query como parâmetro executa esta query guardando o resultado na variável local $a.
  101. * Cria uma variável $fields do tipo array que irá armazenar todos os campos da query em questão por meio do resultado da função fetch_fields(), usando um forech ele armazenará o nome do campo, seu datatype e quantos caracteres são permitidos nesse campo.
  102. *Cria uma variável $data do tipo array que irá armazenar o retorno dos dados obtidos pela query, antes porém ela executa um foreach para formatar os campos datetime, decimal e money no padrão americano e tirando espaços para os demais tipos. alimenta o array $data com os registros formatados em $record.
  103. * @metodo arrays
  104. */
  105. public function arrays($query, $array = false){
  106.  
  107. $a = $this->query($query);
  108. $fields = array();
  109.  
  110. $finfo = $a->fetch_fields();
  111.  
  112. foreach($finfo as $val){
  113.  
  114. array_push($fields, array(
  115. "field"=>$val->name,
  116. "type"=>strtoupper($val->type),
  117. "max_length"=>$val->max_length
  118. ));
  119.  
  120. }
  121.  
  122. $data = array();
  123.  
  124. while($a1 = $a->fetch_array()){
  125.  
  126. $record = array();
  127.  
  128. foreach($fields as $f){
  129.  
  130. switch($f['type']){
  131. case 'DATETIME':
  132. $record[$f['field']] = strtotime(formatdatetime($a1[$f['field']],8));
  133. break;
  134. case 'MONEY':
  135. $record[$f['field']] = number_format($a1[$f['field']],2,'.','');
  136. break;
  137. case 'DECIMAL':
  138. $record[$f['field']] = number_format($a1[$f['field']],2,'.','');
  139. break;
  140. default:
  141. $record[$f['field']] = utf8_encode(trim($a1[$f['field']]));
  142. break;
  143. }
  144.  
  145. }
  146.  
  147. array_push($data, $record);
  148.  
  149. }
  150.  
  151. if(!$array){
  152. return $data;
  153. }else{
  154. if(count($data)==1 && $array){
  155. return $data[0];
  156. }else{
  157. return $data;
  158. }
  159. }
  160.  
  161. }
  162.  
  163. }
  164. ?>
Add Comment
Please, Sign In to add comment