php連mysql的工具類

cp5m 10年前發布 | 2K 次閱讀 PHP MySQL

 
<?php

class mysql {

private $defaultDB = null;
private $link = null;
private $sql = null;
private $bindValue = null;
public $num_rows = 0;
public $affected_rows = 0;
public $insert_id = 0;
public $queries = 0;

public function __construct() {

    if(func_num_args()) {
        $argv = func_get_arg(0);
        if(!empty($argv) && is_array($argv)) { 
            $this->connect($argv);
            $argv['charset'] = isset($argv['charset']) ? $argv['charset'] : 'utf8';
            $this->setCharset($argv['charset']);
        }
    }

}

public function connect($argv, $charset = null) {

    if($this->link) return false;
    $argv = func_get_arg(0);
    $argv['port'] = isset($argv['port']) ? $argv['port'] : 3306;
    $this->link = mysqli_connect( $argv['host'], $argv['user'], $argv['password'], $argv['database'], $argv['port']);
    if(mysqli_connect_errno()) { echo mysqli_connect_error(); exit(0); }
    $this->defaultDB = $argv['database'];

    if($charset)
    $this->setCharset($charset);
}

public function selectDB($database){

    $int = mysqli_select_db($this->link, $database);
    if($int) $this->defaultDB = $database;
    return $int;

}

public function query($sql) {

    $result = mysqli_query($this->link, $sql);
    if(mysqli_errno($this->link)) { echo mysqli_error($this->link); exit(0); }

    $this->queries++;

    if(preg_match('/^use\\s+(\\w+)/', $sql, $matches)) list($range, $this->defaultDB) = $matches;

    $pattern = array('read'=> '/(?<=select|show)(.+)$/i', 'write'=> '/(?<=alter|use|replace|insert|update|delete)(.+)$/i');
    if(preg_match($pattern['write'], $sql)) {
        $this->affected_rows = mysqli_affected_rows($this->link);
    }else{
        $this->num_rows = mysqli_num_rows($result);
    }

    if(preg_match('/^insert(.+)$/i', $sql)) {
        $this->insert_id = mysqli_insert_id($this->link);
    }

    return $result;

}

public function find($sql) {

    $collection = array();
    $result = $this->query($sql);
    while($rows = mysqli_fetch_assoc($result))
    array_push($collection, $rows);
    mysqli_free_result($result);
    return $collection;

}

public function findOne($sql) {

    $result = $this->query($sql);
    $rows = mysqli_fetch_assoc($result);
    mysqli_free_result($result);
    return $rows;

}

public function setCharset($charset) {

    return mysqli_set_charset($this->link, $charset);

}

public function prepare($sql) {

    $this->sql = $sql;

}

public function bindValue($search, $value) {

    $this->bindValue = array();
    $this->bindValue[$search] = $value;

}

public function execute() {

    if(func_num_args()) {
        $argv = func_get_arg(0);
        if(!empty($argv) && is_array($argv)) {
            if(!is_array($this->bindValue)) $this->bindValue = array();
            $this->bindValue = array_merge($this->bindValue, $argv);
        }
    }

    if($this->bindValue) {
        foreach($this->bindValue as $search => $value) {
            $this->sql = str_replace($search, $this->escape($value), $this->sql);
        }
        $this->bindValue = null;
    }

    $int = $this->query($this->sql);
    //$this->sql = null;
    return (boolean) $int;
}


public function escape($string) {

    return mysqli_real_escape_string($this->link, $string);

}

public function close() {

    return mysqli_close($this->link);

}

public function ping() {

    return mysqli_ping($this->link);

}

public function autoCommit($boolean) {

    return mysqli_autocommit($this->link, $boolean);

}

public function commit() {

    return mysqli_commit($this->link);

}

public function rollback() {

    return mysqli_rollback($this->link);

}

public function __destruct() {

    if($this->link) $this->close();
    unset($this->link, $this->defaultDB, $this->bindValue, $this->sql, $this->result, $this->num_rows, $this->affected_rows, $this->insert_id);

}

}

$argv = array( 'host' => 'localhost', 'user' => 'root', 'password' => '', 'port' => 3306, 'database' => 'test', 'charset'=> 'utf8');

// Using the "mysql::__construct" method to connect MySQL database

$mysql = new mysql($argv); var_dump($mysql->find('select version()')); var_dump($mysql->queries);

// Using the "mysql::connect" method to connect MySQL database

$mysql = new mysql(); $mysql->connect($argv); var_dump($mysql->find('select version()')); var_dump($mysql->queries);

$mysql = new mysql(); $mysql->connect($argv); $mysql->setCharset($argv['charset']); var_dump($mysql->find('select version()')); var_dump($mysql->queries);

</pre>

 本文由用戶 cp5m 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!