Home >php教程 >php手册 >php mysql 类

php mysql 类

WBOY
WBOYOriginal
2016-06-06 19:35:301516browse

private mixed $mysql-bindValue private string $mysql-defaultDB private string $mysql-sql public int $mysql-queries public int $mysql-insert_id public int $mysql-num_rows public int $mysql-affected_rows mysql::__construct([array$argv=array()

private mixed $mysql->bindValue
private string $mysql->defaultDB
private string $mysql->sql

public int $mysql->queries
public int $mysql->insert_id
public int $mysql->num_rows
public int $mysql->affected_rows


mysql::__construct( [ array $argv = array() ] );
mysql::connect( array $argv, [ string $charset = null ] );
mysql::selectDB( string $database );
mysql::query( string $sql );
mysql::find( string $sql );
mysql::findOne( string $sql );
mysql::setCharset( string $charset );
mysql::ping( void );
mysql::beginTransaction( void );
mysql::commit( void );
mysql::rollback( void );
mysql::prepare ( string $sql );
mysql::bindValue ( mixed $search, mixed $value );
mysql::execute( [ array $argv = array() ] );
mysql::escape( string $sql );
mysql::close( void );
mysql::__destruct( void );

待续 ...
<?php

class mysql {
       
    private $defaultDB = null;
    private $link = null;
    private $sql = null;
	private $host_info = 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'];
		$this->host_info = (object) $argv;
          
        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;
		
        if(!preg_match('/^select(.+)$/i', $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 beginTransaction($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, $this->host_info);
           
    }
       
}

$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);
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:php压缩和解压zipNext article:做好每一件事