Blogger Information
Blog 35
fans 0
comment 0
visits 25523
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
命名空间数据库操作类----2019年6月19日22:30分
白守的博客
Original
627 people have browsed it

本篇文章使用了,以下知识点

1.命名空间

2.类继承

3.后期绑定

4.接口


遗留问题

1本篇文章有一个干扰了我很久的难点,这个问题现在都还没有解决

问题在38行,就是为什么self是访问db类里面的config,而不是link里面的重写的config类

我在下面调用的时候也是使用link的类

2.接口继承的不需要使用 $this 吗?

42行        

// 预处理sql语句,可以防止sql注入

$stmt = $pdo->prepare($sql);

$stmt = $this->$pdo->prepare($sql);

// 测试发现好像加不加$this都可以访问



实例

<?php

namespace db;
use PDO;



$sql ='SELECT * FROM `staff` LIMIT :num OFFSET :offset';


// 接口
interface iCurd
{
    // 查询数据
     public function cx();
}

// 接口继承
class Db implements iCurd
{
    // 使用connect来调用config
    public static function connect()
    {
        return static::config();
    }
    // 被connect调用的config数据库连接静态方法
    public static function config()
    {
        return new PDO('mysql:host=127.0.0.1;dbname=php','root','123456');

    }

    // 查询
    public function cx()
    {
        // 在查询方法里面我也使用了config方法,不知道为什么不添加这个查询方法用不了,我怀疑是没有连接数据库问题,但是我又想不出其他方法解决
        // 这里为什么是访问Db类里面的config方法,而不是访问link里面的config方法?
        $pdo =  self::config();
        // sql查询语句
        $sql = 'SELECT * FROM `staff` LIMIT 5';
        // 预处理sql语句,可以防止sql注入
        $stmt = $pdo->prepare($sql);
        // 执行sql语句
        $stmt->execute();
        // echo 'aegawg';   
        // 返回二维数组表示的查询结果集
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }

}

// Db的继承子类
class link extends Db
{
    // 静态方法,重写config
    public static function config()
    {
        return new PDO('mysql:host=localhost;dbname=php','root','root');
    }
}



// var_dump($pdo);
$d = new link();
// echo $d();
// var_dump($d);

// 这个是直接使用了类里面的cx方法
foreach ($d->cx() as $it){
    echo "<li>名字:{$it['name']}--年龄:{$it['age']}----职位:{$it['position']}</li>";
}
echo '<hr>';

$pdo = link::connect();
// 使用$pdo里面的链接参数,然后在类外面设置sql语句
// 第二个遍历方法
$staffs = $pdo->query('SELECT * FROM `staff` LIMIT 5');
foreach ($staffs as $staff) {
    print_r($staff); echo '<br>';
}

运行实例 »

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

Correction status:Uncorrected

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