国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP最簡單自定義自己的框架數(shù)據(jù)庫封裝調(diào)用(五)

這篇具有很好參考價(jià)值的文章主要介紹了PHP最簡單自定義自己的框架數(shù)據(jù)庫封裝調(diào)用(五)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1、實(shí)現(xiàn)效果調(diào)用實(shí)現(xiàn)數(shù)據(jù)增刪改查封裝

PHP最簡單自定義自己的框架數(shù)據(jù)庫封裝調(diào)用(五),php,自己框架,php,開發(fā)語言,數(shù)據(jù)庫

?PHP最簡單自定義自己的框架數(shù)據(jù)庫封裝調(diào)用(五),php,自己框架,php,開發(fā)語言,數(shù)據(jù)庫

2、創(chuàng)建數(shù)據(jù)表?
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

?文章來源地址http://www.zghlxwxcb.cn/news/detail-643503.html

3、index.php 入口定義數(shù)據(jù)庫賬號(hào)密碼
<?php

//定義當(dāng)前請(qǐng)求模塊
define("MODULE",'index');

//定義數(shù)據(jù)庫
define('DB_HOST','localhost');//數(shù)據(jù)庫地址
define('DB_DATABASE','aaa');//數(shù)據(jù)庫
define('DB_USER','root');//數(shù)據(jù)庫賬號(hào)
define('DB_PWD','root');//數(shù)據(jù)庫密碼


require "./core/KJ.php";
4、KJ.php引入基類
    //自動(dòng)加載文件
    public static function _autoload($className){

        switch ($className){
            //自動(dòng)加載控制器
            case substr($className,-3)=='Crl':
                $path= CONTROLLER.'/'.$className.'.php';
                if(is_file($path))  include $path;
                break;
            //自動(dòng)加載基類
            case substr($className,-4)=='Base':
                $path= KJ_CORE.'/base/'.$className.'.php';
                if(is_file($path))  include $path;
                break;
            default :
                break;
        }
    }
5、基類使用pdo封裝增刪改查 ModelBase.php
<?php
class ModelBase
{
    public $pdo = NULL;
    public function __construct(){
        $this->_connect();
    }
    private function _connect(){
        $host = DB_HOST;
        $db = DB_DATABASE;
        $user = DB_USER;
        $pass = DB_PWD;

        $dsn = "mysql:host=$host;dbname=$db;charset=utf8";
        try {
            $this->pdo = new PDO($dsn, $user, $pass, [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
            ]);
        } catch (PDOException $e) {
            die("數(shù)據(jù)庫連接失敗: " . $e->getMessage());
        }
    }
    public function insert($table, $data) {
        // 準(zhǔn)備SQL語句
        $fields = implode(', ', array_keys($data));
        $values = ':' . implode(', :', array_keys($data));
        $sql = "INSERT INTO $table ($fields) VALUES ($values)";
        // 綁定參數(shù)并執(zhí)行SQL語句
        $stmt = $this->pdo->prepare($sql);
        foreach ($data as $key => $value) {
            $stmt->bindValue(':' . $key, $value);
        }
        return $stmt->execute();
    }
    public function delete($table, $condition, $params = [])
    {
        $sql = "DELETE FROM $table WHERE $condition";
        $stmt = $this->pdo->prepare($sql);
        foreach ($params as $key => $value) {
            $stmt->bindValue(":$key", $value);
        }
        $stmt->execute();
        return $stmt->rowCount();
    }

    public function update($table, $data, $condition, $params = [])
    {
        $sql = "UPDATE $table SET ";
        $set = [];
        foreach ($data as $key => $value) {
            $set[] = "$key = :$key";
        }
        $sql .= implode(', ', $set);
        $sql .= " WHERE $condition";

        $stmt = $this->pdo->prepare($sql);
        foreach ($data as $key => $value) {
            $stmt->bindValue(":$key", $value);
        }
        foreach ($params as $key => $value) {
            $stmt->bindValue($key, $value);
        }
        $stmt->execute();
        return $stmt->rowCount();
    }
    public function select($table, $condition = '', $params = [])
    {
        $sql = "SELECT * FROM $table";
        if ($condition) {
            $sql .= " WHERE $condition";
        }

        $stmt = $this->pdo->prepare($sql);
        foreach ($params as $key => $value) {

            $stmt->bindValue($key, $value);
        }
        $stmt->execute();
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
    }
}
6、indexCrl.php控制器調(diào)用
class indexCrl{
    public function index(){
        $model= new ModelBase();
       // 插入數(shù)據(jù)
           $data = [
        'age' => 12,
        'name' => '小明',
        ];
        $model->insert('test', $data);

        // 查詢數(shù)據(jù)
        $result = $model->select('test', 'name = :value', [':value' => '小明']);
        var_dump($result);
        // 更新數(shù)據(jù)
        $data = [
            'age' => '13',
        ];
      // 更新數(shù)據(jù)
       $model->update('test', $data, 'id = :id', [':id' => 1]);

       // 刪除數(shù)據(jù)
        $model->delete('test', 'id = :id', ['id' => 1]);
    }
}
7、完整KJ.php代碼
<?php

final class KJ{
    public static function run(){
        //定義常量
        self::_set_const();
        //創(chuàng)建模塊目錄
        self::_mk_module();
        //類自動(dòng)加載
        spl_autoload_register(array(__CLASS__,'_autoload'));
        //運(yùn)行框架
        self::_run();
    }
    //運(yùn)行控制器中方法
    public static function _run(){
        $c=strtolower(isset($_GET['c'])?$_GET['c']:'index');
        $a=strtolower(isset($_GET['a'])?$_GET['a']:'index');
        $c.='Crl';
        if(!class_exists($c)){
            die("控制器".$c."不存在");
        }

        $obj=new $c();
        if(!method_exists($obj,$a)){
            die("控制器".$c."下".$a."方法不存在");
        }
        $obj->$a();
    }
    //自動(dòng)加載文件
    public static function _autoload($className){

        switch ($className){
            //自動(dòng)加載控制器
            case substr($className,-3)=='Crl':
                $path= CONTROLLER.'/'.$className.'.php';
                if(is_file($path))  include $path;
                break;
            //自動(dòng)加載基類
            case substr($className,-4)=='Base':
                $path= KJ_CORE.'/base/'.$className.'.php';
                if(is_file($path))  include $path;
                break;
            default :
                break;
        }
    }


    //定義常量
    public static function _set_const(){
        //獲取框架核心路徑 都替換/以便兼容linux
        $path=str_replace('\\','//',__FILE__);
        //定義常量
        define("KJ_CORE",dirname($path)); //框架核心路徑
        define('ROOT_PATH',dirname(KJ_CORE));//項(xiàng)目根目錄
        define('MODULE_PATH',ROOT_PATH.'/'.MODULE);//模塊

        define('CONTROLLER',MODULE_PATH.'/controller');//定義控制器
        define('MODEL',MODULE_PATH.'/model');//定義模型
        define('VIEW',MODULE_PATH.'/view');//定義顯示成
    }
    //自動(dòng)創(chuàng)建模塊目錄
    public static function _mk_module(){
        $arr=[
            MODULE_PATH,
            CONTROLLER,
            MODEL,
            VIEW,
        ];
        foreach ($arr as $v){
            is_dir($v) || mkdir($v,0777,true);
        }
    }

}
KJ::run();

到了這里,關(guān)于PHP最簡單自定義自己的框架數(shù)據(jù)庫封裝調(diào)用(五)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包