Blogger Information
Blog 40
fans 0
comment 0
visits 37598
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP学习总结(12)——数据库链接查询原理实例2019年10月9号20:00分
虎子爸爸
Original
738 people have browsed it

class_c.png

先上Query.php类文件---这里需要注意命名空间

实例

<?php
namespace Article;

// 数据库查询类
class Query
{
    // 先定义一些必须的属性——连接对象
    public $pdo = null;

    // 表名
    public $table;

    // 字段
    public $field = '*';

    // 条件
    public $where;

    // 数量
    public $limit;

    // 构造方法——这里必须
    public function __construct($pdo){
        // 实例时自动连接数据库
        $this->pdo = $pdo;
    }

    // 设置数据表名称
    public function table($tableName) {
        $this->table = $tableName;
        //返回当前类实例, 用来链式调用后面的其它方法
        return $this;
    }

    // 设置数据表字段
    public function field($fields = '*'){
        $this->field = empty($fields) ? '*' : $fields;
        return $this;
    }

    // 设置查询条件
    public function where($where = ''){
        $this->where = empty($where) ? $where : ' WHERE '. $where;
        return $this;
    }

    // 设置显示数量
    public function limit($limit){
        $this->limit = empty($limit) ? $limit : ' LIMIT '. $limit;
        return $this;
    }

    // 生成选择的SQL语句
    public function select(){
        // 拼装SQL
        $sql = 'SELECT '
            . $this->field // 字段列表
            . ' FROM '
            . $this->table  // 数据表
            . $this->where  // 条件
            . $this->limit;  // 显示数量

        // 预处理
        $stmt = $this->pdo->prepare($sql);
            $stmt->execute();
        return $stmt->fetchAll(\PDO::FETCH_ASSOC);
    }

}

运行实例 »

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

继续上article.php文件

实例

<?php
namespace Article;

require 'Query.php';

class DB{
    /*
     *先定义一个静态属性——连接对象
     *这里定义个静态属性,并且还把的值定义为null,就是方便后面好赋值,好调用
    */
    protected static $pdo = null;

    /* 
    *然后定义一个静态方法——数据库的连接方法
    *注意这里开始调用全局空间的PDO类,传入4个参数并实例化对象:数据库主机host的名称,数据库名称,用户名,登录密码
    */

    public static function connection(){
        self::$pdo = new \PDO('mysql:host=localhost;dbname=phpshouce', 'root', 'root');
    }
    /*
    *继续定义一个魔术方法——静态方法,用来执行方法不存在时的回调

    */

    public static function __callStatic($name, $arguments)
    {
       // 方法不存在,就执行前面的connection()连接数据库
        self::connection();
        // 实例化查询类,将连接对象做为参数
        $query = new Query(self::$pdo);
        // 调用查询对象$query中的对应的方法
        return call_user_func_array([$query, $name],$arguments);
    }
}
$info = DB::table('fubao_user')
->field('id,username,nickname,status')
->where('id > 2')
->limit(5)
->select();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>数据库操作</title>
</head>
<style>
        /*给表格加上边框*/
        
        table {
            border: 1px solid #444444;
            border-collapse: collapse;
            width: 800px;
            margin: 20px auto;
        }
        
        th,
        td {
            border: 1px solid #444444;
            text-align: center;
            padding: 10px;
        }
        
        table caption {
            font-size: 1.3rem;
            /*文本加粗*/
            font-weight: bolder;
            margin-bottom: 15px;
        }
        /* 第一行 */
        
        #table-head-tr {
            background-color: lightgreen;
        }
        /* 第一行 */
        
        table thead>tr:first-of-type {
            /* background-color: lightgreen; */
            color: cornflowerblue;
        }
        
        table tbody>tr:first-of-type>td:first-of-type {
            background-color: wheat;
        }
        
        table tbody>tr:nth-last-of-type(1)>td:first-of-type {
            background-color: crimson;
            color: darkorange;
        }
        /*圆角表格样式*/
        /* 第一行左 */
        
        table tr:first-child th:first-child {
            border-top-left-radius: 12px;
        }
        /* 第一行右 */
        
        table tr:first-child th:last-child {
            border-top-right-radius: 12px;
        }
        
    </style>
<body>
<table>
    <caption>数据库输出select</caption>
    <thead>
        <tr>
            <th>ID</th>
            <th>username</th>
            <th>nickname</th>
            <th>status</th>
        </tr>
    </thead>
    <tbody>
        <?php
        foreach($info as $data){
        ?>
            <tr>

            <td><?php echo $data['id']; ?></td>
            <td><?php echo $data['username']; ?></td>
            <td><?php echo $data['nickname']; ?></td>
            <td><?php echo $data['status']; ?></td>
            </tr>

        <?php } ?>
        
</body>
</html>

运行实例 »

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


Correction status:qualified

Teacher's comments:看来你是真的理解了
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post