博客列表 >426-MYSQL之封装函数库

426-MYSQL之封装函数库

小威的博客
小威的博客原创
2018年04月27日 17:40:56653浏览
  • PDO封装函数库源代码:

实例

<meta charset="UTF-8">
<?php
/**
 * PDO数据库操作函数库
 * PDO数据库连接 操作 通用套用公式
 */

//连接数据库
if (!function_exists('connect'))
{
	/**
     * 数据库连接
     * @param $dbname
     * @param string $type
     * @param string $host
     * @param string $charset
     * @param int $port
     * @param string $user
     * @param string $pass
     * @return PDO
     */
    function connect( $dbname, $type='mysql', $host='127.0.0.1', $charset='utf8', $port=3306, $user='root', $pass='uyYYFGZxuVactZc7')
    {
    	$dsn = "{$type}:host={$host}; dbname={$dbname}; charset={$charset}; port={$port}";//数据源
    	$userName = 'root';//数据库用户名
    	$password = 'uyYYFGZxuVactZc7';//数据库密码
    	//配置连接属性
    	$options = [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,  //设置错误模式
            PDO::ATTR_CASE => PDO::CASE_NATURAL,  //数据表字段保持不变
            PDO::ATTR_EMULATE_PREPARES => true, //启用PDO模拟
            PDO::ATTR_PERSISTENT => true, //启用持久性连接
        ];

        try {
        	//实例化PDO类,创建PDO对象
        	$pdo = new PDO($dsn, $userName, $password, $options);
        }catch (PDOException $e) {
        	die('Connect ERROR!:'.$e->getMessage());
        }

        return $pdo;
    }
}

//新增数据
if (!function_exists('insert')) {
    /**
     * 新增数据
     * @param $pdo
     * @param $table
     * @param $data
     * @return bool
     */
    function insert($pdo, $table, $data=[])
    {
        //创建SQL语句
        $sql = "INSERT IGNORE {$table} SET ";
        foreach (array_keys($data) as $field) {
            $sql .= $field.'=:'.$field.', ';
        }
        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);

        //绑定参数到预处理对象
        foreach ($data as $field => $value) {
            $stmt->bindValue(":{$field}",$value);
        }

        //执行新增操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }
        } else {
            return false;
        }
    }
}

//更新数据
if (!function_exists('update')) {
    function update($pdo,$table,$data=[], $where='') {
        //创建SQL语句
        $sql = "UPDATE {$table} SET ";
        foreach (array_keys($data) as $field) {
            $sql .= $field.'=:'.$field.', ';
        }

        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',');

        //添加更新条件
        if(!empty($where)) {
            $sql .= ' WHERE '. $where;
        }else{
            exit('条件不能为空');
        }

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);

        //绑定参数到预处理对象
        foreach ($data as $field => $value) {
            $stmt->bindValue(":{$field}",$value);
        }

        //执行新增操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }
        } else {
            return false;
        }
    }
}

//查询单条数据
if (!function_exists('find')) {
    /**
     * 查询单条记录
     * @param $pdo
     * @param $table
     * @param $fields
     * @param string $where
     * @return bool
     */
    function find($pdo,$table,$fields, $where='') {
        //创建SQL语句
        $sql = 'SELECT ';
        if (is_array($fields)) {
            foreach ($fields as $field) {
                $sql .= $field.', ';
            }
        } else {
            $sql .= $fields;
        }
        $sql = rtrim(trim($sql),',');
        $sql .= '  FROM '.$table;
        //添加查询条件
        if(!empty($where)) {
            $sql .= '  WHERE '. $where;
        }
        $sql .= '  LIMIT 1';
        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);


        //执行查询操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                return $stmt->fetch();
            }
        } else {
            return false;
        }
    }
}

//查询多条记录
if (!function_exists('select')) {
    /**
     * 查询多条记录
     * @param $pdo
     * @param $table
     * @param $fields
     * @param string $where
     * @return bool
     */
    function select($pdo,$table,$fields, $where='', $order='') {
        //创建SQL语句
        $sql = 'SELECT ';
        if (is_array($fields)) {
            foreach ($fields as $field) {
                $sql .= $field.', ';
            }
        } else {
            $sql .= $fields;
        }

        $sql = rtrim(trim($sql),',');
        $sql .= '  FROM '.$table;
        //添加查询条件
        if(!empty($where)) {
            $sql .= '  WHERE '. $where;
        }

        //添加排序条件
        if(!empty($order)) {
            $sql .= ' order by '.$order;
        }

        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);


        //执行查询操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                $stmt->setFetchMode(PDO::FETCH_ASSOC);
                //返回一个二维数组
                return $stmt->fetchAll();
            }
        } else {
            return false;
        }
    }
}

//删除数据
if (!function_exists('delete')) {
    /**
     * 删除记录
     * @param $pdo
     * @param $table
     * @param string $where
     * @return bool
     */
    function delete($pdo,$table, $where='') {
        //创建SQL语句
        $sql = "DELETE FROM {$table}  ";
        //添加删除条件
        if(!empty($where)) {
            $sql .= 'WHERE '. $where;
        }else{
            exit('条件不能为空');
        }
        //去掉尾部逗号,并添加分号结束
        $sql = rtrim(trim($sql),',').';';

        //创建PDO预处理对象
        $stmt = $pdo->prepare($sql);

        //执行删除操作
        if($stmt->execute()){
            if($stmt->rowCount()>0){
                return true;
            }
        } else {
            return false;
        }
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


  • PDO封装函数库测试代码:

实例

<?php 
/**
 * 数据库操作函数库测试
 */

//导入数据库操作函数库
require 'func_pdo.php';

//1.数据库连接测试
$type='mysql';      //默认数据库驱动
$host='127.0.0.1';  //默认主机
$dbname='wd2018';      //数据库名称
$charset='utf8';    //默认编码
$port=3306;         //默认端口
$user='root';       //用户名
$pass='uyYYFGZxuVactZc7';       //用户密码
$pdo = connect($dbname,$type,$host,$charset,$port,$user,$pass);

//2.新增测试    
$table = 'staff';
$data = ['name'=>'西门大官人','sex'=>0, 'age'=>33, 'salary'=>9900];
// insert($pdo,$table,$data);//执行参数

//3.更新测试    
$table = 'staff';
$where='staff_id=25'; //查询条件使用字符串直接传入
$data = ['name'=>'西门','sex'=>0, 'age'=>43, 'salary'=>8800];
// update($pdo,$table,$data,$where);//执行参数

//4.单条查询测试
$table = 'staff';
$fields = ['name','age','salary'];
// $fields = '*';  //查询所有字段
$fields = 'name,salary'; //查询指定字段
$where = 'age > 80';
echo '<pre>'.print_r(find($pdo, $table, $fields, $where),true).'</pre>';

//5.多条查询测试
$table = 'staff';
$fields = ['name','age','salary'];
$fields = '*';
$where = 'age < 40'; // 设定查询条件
$order = 'staff_id asc'; //按字段排序
// echo '<pre>'.print_r(select($pdo, $table, $fields, $where, $order),true).'</pre>';

//6.删除测试
$table = 'staff';
$where = 'staff_id = 25';
$where = '';
//delete($pdo, $table, $where);

运行实例 »

点击 "运行实例" 按钮查看在线实例


  • MYSQLI封装函数库源代码:

实例

<meta charset="UTF-8">
<?php
/**
 * PRE数据库操作函数库
 * PRE数据库连接 操作 通用套用公式
 */

//连接数据库
class mysql
{
  private $mysqli;
  private $result;

    /**
     * 数据库连接
     * @param $config 配置数组
     */
    public function connect($config)
    {
        $host = $config['host'];        //主机地址
        $username = $config['username'];//用户名
        $password = $config['password'];//密码
        $database = $config['database'];//数据库
        $port = $config['port'];        //端口号
        $charset = $config['charset'];  //默认字符集
        $this->mysqli = new mysqli($host, $username, $password, $database, $port, $charset);
        if ($this->mysqli->connect_errno) {
            exit('连接错误'.$mysqli->connect_errno.':'.$mysqli->connect_error);
        }

        return $this->mysqli;
    }

    //新增数据
    /**
    * 插入数据
    * @param $table 数据表
    * @param $data 数据数组
    * @return mixed 插入ID
    */
    public function insert($table, $data=[])
    {
        //创建SQL语句  用键值遍历
        foreach ($data as $key => $value) {
        $data[$key] = $this->mysqli->real_escape_string($value);
    }
        $keys = '`' . implode('`,`', array_keys($data)) . '`';
        $values = '\'' . implode("','", array_values($data)) . '\'';
        $sql = "INSERT INTO {$table}( {$keys} )VALUES( {$values} )";
        $this->mysqli->query($sql);
        return $this->mysqli->insert_id;  
    }



    //更新数据
    /**
    * @param $table 数据表
    * @param $data 数据数组
    * @param $where 过滤条件
    * @return mixed 受影响记录
    */
    public function update($table, $data, $where)
    {
    foreach ($data as $key => $value) {
      $data[$key] = $this->mysqli->real_escape_string($value);
    }
    $sets = array();
    foreach ($data as $key => $value) {
      $kstr = '`' . $key . '`';
      $vstr = '\'' . $value . '\'';
      array_push($sets, $kstr . '=' . $vstr);
    }
    $kav = implode(',', $sets);
    $sql = "UPDATE {$table} SET {$kav} WHERE {$where}";
    $this->mysqli->query($sql);
    return $this->mysqli->affected_rows;
    }


    //查询单条数据
    /**
    * @param $table 数据表
    * @param null $field 字段
    * @param null $where 条件
    * @return mixed 查询结果数目
    */
    public function select($table, $field = null, $where = null)
    {
    $sql = "SELECT * FROM {$table}";
    if (!empty($field)) {
      $field = '`' . implode('`,`', $field) . '`';
      $sql = str_replace('*', $field, $sql);
    }
    if (!empty($where)) {
      $sql = $sql . ' WHERE ' . $where;
    }
    $this->result = $this->mysqli->query($sql);
    return $this->result->num_rows;
    }
   /**
    * @return mixed 获取全部结果
    */
    public function fetchAll()
    {
    return $this->result->fetch_all(MYSQLI_ASSOC);
    }


    //删除数据
    /**
    * @param $table 数据表
    * @param $where 过滤条件
    * @return mixed 受影响记录
    */
    public function delete($table, $where)
    {
    $sql = "DELETE FROM {$table} WHERE {$where}";
    $this->mysqli->query($sql);
    return $this->mysqli->affected_rows;
    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


  • MYSQLI封装函数库测试代码:

实例

<?php 
/**
 * MYSQLI数据库操作函数库测试
 */

//导入数据库操作函数库
require_once 'func_mysqli.php';

//1.数据库连接测试
$config = array(
    'type' => 'mysql',
    'host' => '127.0.0.1',
    'username' => 'root',
    'password' => 'uyYYFGZxuVactZc7',
    'database' => 'wd2018',
    'port' => '3306',
    'charset' => 'utf8',
);

/* 连接数据库 */
$mysql = new mysql();
$mysql->connect($config);

//2.新增测试    
$table = 'staff';
$data = ['name'=>'阿柯','sex'=>1, 'age'=>18, 'salary'=>800];
// $id = $mysql->insert($table,$data);//执行参数\
// echo '插入记录的ID为' . $id;

//3.更新测试    
$table = 'staff';
$where ='staff_id=32'; //查询条件使用字符串直接传入
$data = array('name'=>'神龙教主', 'sex'=>0,'age'=>18,'salary'=>8000,); 
$rows = $mysql->update($table, $data, $where);
// echo '受影响的记录数量为' . $rows . '条';

//4.单条查询测试
$table = 'staff';
$field = array('name', 'age');//查询指定字段
$where = 'age > 80';
$mysql->select($table, $field, $where);
// echo '<pre>'.print_r($mysql->fetchAll(),true).'</pre>';

//5.查询全部数据测试
$table = 'staff';
$num = $mysql->select($table);
echo '共查询到' . $num . '条数据';
echo '<pre>'.print_r($mysql->fetchAll(),true).'</pre>';

//6.删除测试
$table = 'staff';
$where = 'staff_id = 32';
$rows = $mysql->delete($table, $where);
// echo '已删除' . $rows . '条数据';

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议