Myslím, že název databáze se ve vašem kódu neodráží. Můžete zkusit změnit svůj kód, jak je uvedeno níže,
$dbname = "my_db";
$dsn = "mysql:host=localhost;dbname="+$dbname+";
nebo
$dsn = "mysql:host=localhost;dbname=my_db;
Myslím, že název databáze se ve vašem kódu neodráží. Můžete zkusit změnit svůj kód, jak je uvedeno níže,
$dbname = "my_db";
$dsn = "mysql:host=localhost;dbname="+$dbname+";
nebo
$dsn = "mysql:host=localhost;dbname=my_db;