Acho que o nome do banco de dados não está refletindo no seu código. Você pode tentar alterar seu código como abaixo,
$dbname = "my_db";
$dsn = "mysql:host=localhost;dbname="+$dbname+";
ou
$dsn = "mysql:host=localhost;dbname=my_db;
$dbname = "my_db";
$dsn = "mysql:host=localhost;dbname="+$dbname+";
$dsn = "mysql:host=localhost;dbname=my_db;