开发者社区> 问答> 正文

php pdo单例模式怎么同时连接两个数据库?:报错

三个库都在同一个mysql服务器上,一个库里的user表的登录密码改了其他两个库里的也要改,现在用的pdo单例模式连接,同时写了两个连接句柄,不管是把第一个连接句柄的变量unset还是置为空,打印第二个变量出来都是第一个句柄的值,哪位大神能给个同时连两个数据库并可以同时增删改的思路,最好还是基于pdo单例模式。感谢!

展开
收起
kun坤 2020-06-06 14:19:54 926 0
1 条回答
写回答
取消 提交回答
  • 同一个服务是可以的。贴代码

    define("DB_HOST","localhost");
    define("DB_NAME","test");
    define("DB_USER","root");
    define("DB_PASSWORD","root");
    
    Class SafePDO extends PDO {
            public static function exception_handler($exception) {
                die('Uncaught exception: '. $exception->getMessage());
            }
            public function __construct($dsn, $username='', $password='', $driver_options=array()) {
                set_exception_handler(array(__CLASS__, 'exception_handler'));
                parent::__construct($dsn, $username, $password, $driver_options);
                restore_exception_handler();
            }
    }
    
    $dsn = 'mysql:host='.DB_HOST.';dbname='.DB_NAME.';charset=utf8';
    $opt = array(
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
        );
    $pdo = new SafePDO($dsn,DB_USER,DB_PASSWORD);
    
    $ret = $pdo->query("SELECT * FROM teacher limit 1");
    
    echo "LOCAL DB";
    
    while ($o = $ret->fetch())
    {
        print_r($o);
    }
    
    echo "OVER DB";
    
    $ret = $pdo->query("SELECT * FROM mysql.user limit 1");
    
    while ($o = $ret->fetch())
    {
        print_r($o);
    }
    

     

    ######试了,可以的,感谢。######

    可以跨数据库操作。update mysq.user set password='xxx' where user='root';

    ######pdo连接必须选择库名吧,选择了还能跨库吗######

    两个实例, 不可能是一个库啊,  代码发上来. 

    ######回复 @xuweijia90324 : 你这是单例啊, 有静态缓存.######实例1:$db1 = MyPDO::getInstance($host,$user,$pwd,$dbname1,'utf-8'); 实例2:$db2 = MyPDO::getInstance($host,$user,$pwd,$dbname2,'utf-8');
    2020-06-06 14:19:59
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载