Je pense que le nom de la base de données ne se reflète pas dans votre code. Pouvez-vous essayer de modifier votre code comme ci-dessous,
$dbname = "my_db";
$dsn = "mysql:host=localhost;dbname="+$dbname+";
ou
$dsn = "mysql:host=localhost;dbname=my_db;