Para PDO, você NÃO deve executar
USE dbname
diretamente. Eu acho que o que está acontecendo é que você tem várias instâncias de script PHP e quando cada uma executa
USE dbname
sem que o PDO esteja ciente do que está acontecendo, e isso causa toda a confusão. Em vez disso, você deve especificar dbname em sua string de conexão PDO como
'mysql:host=localhost;dbname=testdb'
. Isso significa que você não pode realmente alternar entre bancos de dados depois de criar sua classe Model. Você deve saber o nome do banco de dados antecipadamente e usá-lo no Construtor de modelo. Leia mais na documentação do PDO .