ThinkPHP同時操作多個數據庫


除了在預先定義數據庫連接和實例化的時候指定數據庫連接外,我們還可以在模型操作過程中動態的切換數據庫,支持切換到相同和不同的數據庫類型。用法很簡單, 只需要調用Model類的db方法,用法:

$this->db(1,"mysql://root:123456@localhost:3306/test")->query("查詢SQL");

數據庫編號用數字格式,對於已經調用過的數據庫連接,是不需要再傳入數據庫連接信息的,系統會自動記錄。對於默認的數據庫連接,內部的數據庫編號是0,因此為了避免沖突,請不要再次定義數據庫編號為0的數據庫配置。

實例:

  同時將用戶輸入的數據保存到兩個不同數據下的表

控制器代碼:

        public function AddUser(){
            if(IS_POST){
                if(I('post.UserName')!=''&& I('post.UserEmail','','email')!=''){
                    $User = D('Admin/Userinfo');
                    $User -> AddUser(I('post.'));
                }        
            }else{
                $this->show();
            }
        }

模型類代碼:

<?php
    namespace Admin\Model;
    use Think\Model;
    class UserinfoModel extends Model{

        public function AddUser($data){
            $data['LastLogin'] = date("Y-m-d H:i:s");
            $this->create($data);
            if($this->add()){
                echo "第一張表添加成功";
                $this->db(1,'mysql://root:123@localhost:3306/eko_1');
                $this->create($data);
                if($this->add()){
                    echo "第二張表添加成功";
                }
            }else{
                echo "失敗";
            }
        }
    }

在使用D()實例化自定義模型是需要嚴格遵守命名格則,首字母大寫,如果類名是UserInfo則對應數據庫名稱為user_info


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM