三个库都在同一个mysql服务器上,一个库里的user表的登录密码改了其他两个库里的也要改,现在用的pdo单例模式连接,同时写了两个连接句柄,不管是把第一个连接句柄的变量unset还是置为空,打印第二个变量出来都是第一个句柄的值,哪位大神能给个同时连两个数据库并可以同时增删改的思路,最好还是基于pdo单例模式。感谢!
同一个服务是可以的。贴代码
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');版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。