<?php 
/** 
 * @author Renan Martins Pimentel 
 * @version 1.0 
 */ 
 
class MySql { 
 
    protected $host     = "[HOST]"; 
    protected $user     = "[USER]"; 
    protected $pass     = "[PASSWORD]"; 
    protected $dbName   = "[NAMEDB]"; 
     
    protected $error;  
    protected $inforResult; 
    protected $numRows; 
    protected $numCols; 
    protected $id; 
    protected $dataJson; 
    protected $transacao; 
    protected $sql; 
    protected $converterUtf8=true; 
    protected $uppercase=false; 
 
    protected $connection; 
 
    function __construct(){ 
 
    } 
    
    public function setDbName($dbName){ 
        if (strlen(trim($dbName)) > 0 ){ 
            $this->dbName = $dbName; 
            return true; 
        } 
        else{ 
            return false; 
        } 
 
    } 
 
    public function getDbName(){ 
        return $this->dbName; 
    } 
 
    public function setHost($host){ 
        if (strlen(trim($host)) > 0 ){ 
            $this->host = $host; 
        } 
    } 
 
    public function getHost(){ 
        return $this->host; 
    } 
 
    public function setUser($user){ 
        if (strlen(trim($user)) > 0 ){ 
            $this->user = $user; 
        } 
    } 
 
    public function getUser(){ 
        return $this->user; 
    } 
 
 
    public function setPass($senha){ 
        if (strlen(trim($senha)) > 0 ){ 
            $this->pass = $senha; 
        } 
    } 
 
    function getErros(){ 
        $erros = print_r($this->error, true); 
        return $erros; 
    } 
 
    public function setUppercase($bool){ 
        if(is_bool($bool)){ 
            $this->uppercase = $bool; 
        } 
    } 
 
    public function getId(){ 
        return $this->id; 
    } 
 
    public function getSql(){ 
        return $this->sql; 
    } 
 
    public function getNumRows(){ 
        return $this->numRows; 
    } 
 
    public function getNumCols(){ 
        return $this->numCols; 
    } 
 
    private function connect(){ 
        try{ 
            $this->connection = new PDO("mysql:host=".$this->host.";dbname=".$this->dbName, $this->user, $this->pass); 
            return true; 
        } 
        catch (PDOException $e) { 
            print "Error: " . $e->getMessage() . "<br/>"; 
            die(); 
        } 
    } 
 
    private function logout(){ 
        $this->connection = null; 
        $this->sql = null; 
    } 
 
    public function setUtf8($bool){ 
        if(is_bool($bool)){ 
            $this->converterUtf8 = $bool; 
        } 
    } 
 
    public function setSqlScript($sql, $complementation=false){ 
 
        $arrayExp[] = "/''/"; 
        $arrayExp[] = "/' '/"; 
        $arrayExp[] = "/\" \"/"; 
        $arrayExp[] = "/\"\"/"; 
        $arrayExp[] = "/\"null\"/"; 
        $arrayExp[] = "/\"NULL\"/"; 
        $arrayExp[] = "/'null'/"; 
        $arrayExp[] = "/'NULL'/"; 
        $sql = preg_replace($arrayExp, "null", $sql); 
        $sql = preg_replace($arrayExp, "null", $sql); 
 
        $arrayExp = null; 
        $arrayExp[] = "/,[ \t\n\r\f\v]*,/"; 
        $arrayExp[] = "/,,/"; 
        $arrayExp[] = "/, ,/"; 
        $sql = preg_replace($arrayExp, ",\n null,", $sql); 
        $sql = preg_replace($arrayExp, ",\n null,", $sql); 
 
        $arrayExp = null; 
        $arrayExp = "/=[ \t\n\r\f\v]*,/"; 
        $sql = preg_replace($arrayExp, "= null,", $sql); 
        $sql = preg_replace($arrayExp, "= null,", $sql); 
        
         
        if($complementation == false){ 
            $this->sql = null; 
            $this->sql = $sql; 
        } 
        else{ 
            $this->sql .= $sql."; \n"; 
        } 
    } 
 
     public function select($sql){ 
 
        $this->connect(); 
        if($this->connection === false){ 
            die("Error."); 
        } 
        else{ 
 
            $this->setSqlScript($sql); 
            $pdo = $this->connection; 
 
            $db = $pdo->prepare($this->sql); 
 
            $result = $db->execute(); 
 
            if($result === true){ 
                $data = $db->fetchAll(PDO::FETCH_ASSOC); 
 
                $this->id = $pdo->lastInsertId(); 
                $this->numRows = $db->rowCount(); 
                $this->numCols = $db->columnCount(); 
                $pdo = null; 
 
                if($this->uppercase == false){ 
                    if(is_array($data)){ 
                        foreach($data as $key=> $reg){ 
                            foreach($reg as $campo=>$val){ 
                                $val = ($this->converterUtf8==true)?utf8_encode($val):$val; 
                                $return[$key][$campo] = $val; 
                            } 
                        } 
                    } 
                    return $return; 
                }else{ 
                     
                    if(is_array($data)){ 
                        foreach($data as $key=> $reg){ 
                            foreach($reg as $campo=>$val){ 
                                $val = ($this->converterUtf8==true)?utf8_encode(strtoupper($val)):strtoupper($val); 
                                $returnUppercase[$key][$campo] = $val; 
                            } 
                        } 
                    } 
 
                    return $returnUppercase; 
                } 
            }else{ 
 
                $this->error = $db->errorInfo(); 
                $this->error['sql'] = $this->sql; 
                return die($this->getErros()); 
            } 
            $this->logout(); 
        } 
    } 
 
 
    public function insert($sql) 
    { 
        $this->connect(); 
        if($this->connection === false){ 
            die("Error."); 
        }else{ 
            $sql = ($this->converterUtf8==true)?utf8_decode($sql):$sql; 
            $this->setSqlScript($sql); 
            $pdo = $this->connection; 
 
            try { 
                $transacao = $pdo->beginTransaction(); 
                if($transacao === true){ 
                    $db = $pdo->prepare($this->sql); 
 
                    $result = $db->execute(); 
                    if($result===true){ 
                        $this->id = $pdo->lastInsertId(); //NÃO FUNCIONA NO DRIVER DBLIB PARA MSSQL 
                        $this->numRows = $db->rowCount(); 
                        $this->numCols = $db->columnCount(); 
                         
                        $commit = $pdo->commit(); 
 
                        if($commit === true){ 
                            $this->sql = null; 
                            return $result; 
                        }else{ 
                            $this->error = $db->errorInfo(); 
                            $this->error['sql'] = $this->sql; 
                            return die("Error commit: " .$this->getErros()); 
                        } 
                    }else{ 
                        $this->error = $db->errorInfo(); 
                        $this->error['sql'] = $this->sql; 
                        return die("Error query: " .$this->getErros()); 
                        $this->sql = null; 
                    } 
 
                    $pdo = null; 
                    $this->sql = null; 
                } 
                else{ 
                    $pdo = null; 
                    $this->error['sql'] = $this->sql; 
                    return die("Error: " .$this->getErros()); 
                    $this->sql = null; 
                } 
                $this->sql = null; 
 
            } 
            catch (PDOException $e) { 
                $pdo->rollBack(); 
                $this->error = $db->errorInfo(); 
                $this->error['sql'] = $this->sql; 
                $this->sql = null; 
                 
                return die("Failed: " . $e->getMessage().$this->getErros()); 
            } 
 
            $this->logout(); 
        } 
 
    } 
 
    public function multInsert($sqlArray){ 
 
        $this->connect(); 
        if($this->connection === false){ 
            die("Error."); 
        } 
 
        if(is_array($sqlArray)==false){ 
            die('Error Script.'); 
        } 
 
        else{ 
            $this->sql = null; 
            $pdo = $this->connection; 
             
            $Transaction = $pdo->beginTransaction(); 
            $Transaction = true; 
             
            try { 
                
                if($transacao === true){ 
                    foreach ($sqlArray as $sql) { 
                        $this->setSqlScript($sql); 
                         
                        $db         = $pdo->prepare($this->sql); 
                        $result  = $db->execute(); 
 
                        if($result===true){ 
                            $this->id = $pdo->lastInsertId(); //NÃO FUNCIONA NO DRIVER DBLIB PARA MSSQL 
                            $this->numRows = $db->rowCount(); 
                            $this->numCols = $db->columnCount(); 
                        }else{ 
                            $this->error = $db->errorInfo(); 
                            $this->error['sql'] = $this->sql; 
                            return die("Error query: " .$this->getErros()); 
                        } 
                    } 
 
                    $commit = $pdo->commit(); 
                    if($commit === true){ 
                        $pdo = null; 
                        return true; 
                    }else{ 
                        $pdo->rollBack(); 
                        $this->error = $db->errorInfo(); 
                        $this->error['sql'] = $this->sql; 
                        return die("Error commit: " .$this->getErros()); 
                    } 
                     
                } 
                else{ 
                    $pdo = null; 
                    $this->error['sql'] = $this->sql; 
                    return die("Error: " .$this->getErros()); 
                } 
 
            } 
            catch (PDOException $e) { 
                $pdo->rollBack(); 
                $this->error = $db->errorInfo(); 
                $this->error['sql'] = $this->sql; 
                return die("Failed: " . $e->getMessage().$this->getErros()); 
                $pdo = null; 
            } 
 
            $this->logout(); 
        } 
 
    } 
} 
?>
 
 |