1. 程式人生 > >ThinkPHP5 動態連線資料庫

ThinkPHP5 動態連線資料庫

MySQL :

CREATE DATABASE IF NOT EXISTS `db1` DEFAULT CHARACTER SET utf8 ;
USE `db1`;

CREATE TABLE IF NOT EXISTS `think_data`(
`user_id` INT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR(255) NOT NULL COMMENT '名稱',
PRIMARY KEY (`user_id`)  ) ENGINE=INNODB  DEFAULT CHARSET=utf8 ;

INSERT  INTO `think_data`(`user_id`,`user_name`)
VALUES (1,'Tim'),(2,'Jason'),(3,'Tom'),(4,'Jack'),(5,'Frank'),(6,'Tina'),(7,'Suman'),(8,'Linda');

CREATE DATABASE IF NOT EXISTS `db2` DEFAULT CHARACTER SET utf8 ;
USE `db2`;

CREATE TABLE IF NOT EXISTS `think_data`(
`user_id` INT(8) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_name` VARCHAR(255) NOT NULL COMMENT '名稱',
PRIMARY KEY (`user_id`)  ) ENGINE=INNODB  DEFAULT CHARSET=utf8 ;

INSERT  INTO `think_data`(`user_id`,`user_name`)
VALUES (10,'Rainly'),(11,'Sunny');

apps/config.php :

// 資料庫配置1
    'db1' => [
        // 資料庫型別
        'type' => 'mysql',
        // 伺服器地址
        'hostname' => '127.0.0.1',
        // 資料庫名
        'database' => 'db1',
        // 資料庫使用者名稱
        'username' => 'root',
        // 資料庫密碼
        'password' => '123456',
        // 資料庫連線埠
        'hostport' => '3306',
        // 資料庫連線引數
        'params' => [],
        // 資料庫編碼預設採用utf8
        'charset' => 'utf8',
        // 資料庫表字首
        'prefix' => 'think_',
        // 開啟資料庫除錯
        'debug'  =>  true,
    ],
    // 資料庫配置2
    'db2' => [
        // 資料庫型別
        'type' => 'mysql',
        // 伺服器地址
        'hostname' => '127.0.0.1',
        // 資料庫名
        'database' => 'db2',
        // 資料庫使用者名稱
        'username' => 'root',
        // 資料庫密碼
        'password' => '123456',
        // 資料庫連線埠
        'hostport' => '3306',
        // 資料庫連線引數
        'params' => [],
        // 資料庫編碼預設採用utf8
        'charset' => 'utf8',
        // 資料庫表字首
        'prefix' => 'think_',
    ],

apps/apps/index/controller/User.php :

<?php
namespace app\index\controller;
use think\Controller;
use think\Request;
use think\Db;

class User extends Controller
{
    /**
     * 顯示資源列表
     *
     * @return \think\Response
     */
    public function index()
    {

        $result1 = Db::connect('db1')->query('select * from think_data where user_id = 2');
        $result2 = Db::connect([
            // 資料庫型別
            'type' => 'mysql',     // 伺服器地址
            'hostname' => '127.0.0.1',     // 資料庫名
            'database' => 'db2',     // 使用者名稱
            'username' => 'root',     // 密碼
            'password' => '123456',
            // 開啟除錯模式
            'debug' => true,])->query('select * from think_data where user_id = 10');
        $result3 = Db::connect('db1')->query('select * from think_data where user_id = 3');

        dump($result1);
        dump($result2);
        dump($result3);
    }

    /**
     * 顯示建立資源表單頁.
     *
     * @return \think\Response
     */
    public function create()
    {

    }

    /**
     * 儲存新建的資源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {

    }

    /**
     * 顯示指定的資源
     *
     * @param  int  $user_id
     * @return \think\Response
     */
    public function read($user_id)
    {

    }

    /**
     * 顯示編輯資源表單頁.
     *
     * @param  int  $user_id
     * @return \think\Response
     */
    public function edit($user_id)
    {

    }

    /**
     * 儲存更新的資源
     *
     * @param  \think\Request  $request
     * @param  int  $user_id
     * @return \think\Response
     */
    public function update(Request $request, $user_id)
    {

    }

    /**
     * 刪除指定資源
     *
     * @param  int  $user_id
     * @return \think\Response
     */
    public function delete($user_id)
    {

    }

    public function miss()
    {

    }
}

路由配置apps/route.php :
<?php
use think\Route;
//主表路由(分組路由配置順序必須是從表路由優先配置,否則從表路由一直會路由到主表控制器的方法上)
Route::group(['name'=>'users','prefix'=>'index/User/'], function() {
    Route::get('create$','create',['merge_extra_vars'=>true]);
    Route::post('/$','save',['merge_extra_vars'=>true]);
    Route::get(':user_id/edit$','edit',['merge_extra_vars'=>true]);
    Route::get(':user_id$','read',['merge_extra_vars'=>true]);
    Route::put(':user_id$','update',['merge_extra_vars'=>true]);
    Route::delete(':user_id$','delete',['merge_extra_vars'=>true]);
    Route::get('/$','index',['merge_extra_vars'=>true]);
    Route::miss('miss'); // 在根資源路由裡面寫miss路由
}, [], ['user_id' => '\d+']);

// create GET  http://contoso.org/users/create
// save   POST http://contoso.org/users
// edit   GET  http://contoso.org/users/10/edit
// read   GET  http://contoso.org/users/10
// update PUT  http://contoso.org/users/10
// delete DELETE http://contoso.org/users/10
// index  GET  http://contoso.org/users

路由地址:http://contoso.org/users

瀏覽器 OUTPUT :

/home/myth/www/think/thinkphp/library/think/Debug.php:165:
array (size=1)
  0 =>
    array (size=2)
      'user_id' => int 2
      'user_name' => string 'Jason' (length=5)

/home/myth/www/think/thinkphp/library/think/Debug.php:165:
array (size=1)
  0 =>
    array (size=2)
      'user_id' => int 10
      'user_name' => string 'Rainly' (length=6)

/home/myth/www/think/thinkphp/library/think/Debug.php:165:
array (size=1)
  0 =>
    array (size=2)
      'user_id' => int 3
      'user_name' => string 'Tom' (length=3)


    /**
     * 顯示資源列表
     *
     * @return \think\Response
     */
    public function index()
    {

        $result1 = Db::connect('mysql://root:[email protected]:3306/db1#utf8')->query('select * from think_data where user_id = 2');
        $result2 = Db::connect('mysql://root:[email protected]:3306/db2#utf8')->query('select * from think_data where user_id = 10');
        $result3 = Db::connect('mysql://root:[email protected]:3306/db1#utf8')->query('select * from think_data where user_id = 3');

        dump($result1);
        dump($result2);
        dump($result3);
    }


相關推薦

ThinkPHP5 動態連線資料庫

MySQL : CREATE DATABASE IF NOT EXISTS `db1` DEFAULT CHARACTER SET utf8 ; USE `db1`; CREATE TABLE IF NOT EXISTS `think_data`( `user_id` IN

delphi ado 動態連線資料庫

unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, DB, ADODB, ExtC

mysql動態連線資料庫

1.配置xml檔案applicationContext.xml <bean id="defaultDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

動態新建資料庫連線

動態新建資料庫並連線,呼叫hibernate建表 CreateDataSource類: import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java

[Echarts視覺化] 二.php和ajax連線資料庫實現動態資料視覺化

前一篇文章 "[Echarts視覺化] 一.入門篇之簡單繪製中國地圖和貴州地區" 主要是通過Echarts視覺化介紹入門知識、中國地圖和貴州地區各省份的資料分析,其中貴州地圖才是它的核心內容。這篇文章主要結合PHP、MySQL、JQuery和Ajax從資料庫中獲取資料,動態的

java連線資料庫和執行靜態和動態的sql語句

►JDBC (Java DatabaseConnectivity) 是用於執行SQL 語句的Java 應用程式介面,由一組用Java 語言編寫的類和介面組成。 ►JDBC 是一種規範,各資料庫廠商為J

Spring Boot 動態連線多資料來源,主從資料庫

        實際開發場景中,通常情況下單個微服務會配置多個數據源。本文簡單的介紹一下基於Spring boot框架動態連線多資料來源的實現,首先需要將新增的資料來源標籤化,在配置檔案中新增多個數據源,通過引數標籤的方式判斷不同請求對應的資料來源。採用主從配置的方式,配置

eclipse開發工具動態網站專案使用jdbc連線資料庫

首先,要到這裡https://dev.mysql.com/downloads/connector/j/5.0.html下載mysql-connector-java的壓縮檔案。 然後,解壓縮,將資料夾下的mysql-connector-java-xxx-bin.jar檔案複製

利用pdo_odbc來實現PHP連線資料庫(利用ThinkPHP5.1搭建的專案)

利用pdo odbc來實現PHP連線資料庫:在PHP配置檔案裡面開啟pdo_odbc.dll服務。重啟Apache伺服器。在ThinkPHP5.1的專案中在模組裡新增config新增規定好的樣式資料庫:程式碼如下:<?phpreturn [// 資料庫型別'type' => 'sqlsrv',//

MySQL-載入配置檔案並通過配置檔案連線資料庫

package demo5; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.S

PHP7連線資料庫的方法

* 在PHP7中已經廢除了mysql庫了,則只能使用mysqli及PDO mysqli面向物件風格 <?php $serve = 'localhost:3306'; $username = 'root'; $password = 'admin123'; $dbname = 'e

JDBC資料庫連線連線資料庫資料庫操作DAO層設計通用更新及查詢方法(二)

上篇文章主要介紹了通過資料庫連線池連線資料庫,然後設計了對資料庫通用更新和查詢方法,本篇文章主要通過例項介紹上篇文章定義的對資料庫操作的幾個方法的使用:     首先我們先在資料庫建立一個學生資訊表Student欄位如圖: 建立好表將配置檔案的資訊改好然後需要建立一

JDBC資料庫連線連線資料庫資料庫操作DAO層設計通用更新及查詢方法(一)

該篇文章介紹了資料庫連線池獲取資料庫連線以及資料庫操作的基本使用,然後主要提供了java專案案例中dao層的一種設計,利用反射的原理定義了通用的查詢方法可以對應所有的表和例項。文章中的每段程式碼都提供了詳細的註釋及邏輯步驟 首先匯入資料庫連線的所需要的jar包:    

站長篇----遠端連線資料庫失敗的解決方法

前言 遠端連線資料出錯,報: host “XXXXXXXXXXXX” is not allowed to connect to this MySql server unable to authentic SSH tunnel: Invalid user

VB6基本資料庫應用(三):連線資料庫與SQL語句的Select語句初步

資料庫我們已經建好了,重提一下上一章的結果,我們最後建立了一張Student的表,其中有StudentID(數字的雙精度型別)和StudentName(文字型別。補充一下,2013中有【長文字】和【短文字】,人名不會很長,根據上一章選擇儘量小的資料型別的規則,這裡就選【短文字】就可以了)。儘

python連線資料庫插入資料庫資料所碰到的坑

Python中插入資料時執行後,沒有報任何錯誤,但資料庫中並沒有出現新新增的資料 原因:缺少提交操作。 解決方案:Python操作資料庫時,如果對資料表進行修改/刪除/新增等控制操作,系統會將操作儲存在記憶體,只有執行commit(),才會將操作提交到資料庫。 但是總有你想不到的坑程式碼

JAVA JDBC 連線資料庫程式碼

package ora; import java.sql.Connection; import java.sql.DriverManager; public class springhead { //驅動程式就是之前在classpath中配置的JDBC的驅動程式的JAR 包中 publ

jsp資料庫(二、使用連線池與資料來源連線資料庫

一、介紹 1、資料來源,是當前Web應用開發中獲取資料庫連線的首選方法。使用資料來源這種技術,應用程式在啟動時只需建立少量的連線物件即可 2、連線池與定義了一些連線,當應用程式需要連線物件時就從連線池中取出一個,當連線物件使用完畢將其放回連線池,從而避免在每次請求連線時都要建立連線物件

jsp資料庫(一、使用jdbc連線資料庫

步驟: 一、載入驅動程式 Class.forName("sun.jdbc.odbc.jdbcOdbcDriver"); 二、建立連線物件 Connection conn = DriverManager.getConnection("主機名","使用者名稱","密碼");

解決在anaconda下使用pymysql連線資料庫MySQL時出現的一個問題

問題描述: pymysql.err.OperationalError: (1045, "Access denied for user 'mel'@'localhost' (using password: NO)") db = pymysql.connect(host="localhost"