मुझे लगता है कि डेटाबेस का नाम आपके कोड में प्रतिबिंबित नहीं हो रहा है। क्या आप नीचे दिए गए कोड की तरह अपना कोड बदलने की कोशिश कर सकते हैं,
$dbname = "my_db";
$dsn = "mysql:host=localhost;dbname="+$dbname+";
या
$dsn = "mysql:host=localhost;dbname=my_db;