「PHP7+MariaDB/MySQLマスターブック」というテキストを使って独学中です。
テキスト内のサンプルプログラムをコーディングすると、表題のエラーになります。
<?PHP
//ユーザー、パスワード、ホストは秘匿。別途設定中。
$db_user = "xxxxxxxxx";
$db_pass = "xxxxxxxxx";
$db_host = "xxxxxxxxx";
$db_name = "phptx";
$db_type = "mysql";
$dsn = "$db_type:host=$db_host;db_name=$db_name;charset=utf8";
try{
$pdo = new PDO($dsn, $db_user, $db_pass);
$pdo->setattribute(pdo::ATTR_ERRMODE,
pdo::ERRMODE_EXCEPTION);
$pdo->setattribute(pdo::ATTR_EMULATE_PREPARES, false);
print "接続しました";
} catch(PDOexception $Exception) {
die('エラー1:'.$exception->getMessage());
}
try{
$pdo->beginTransaction();
$sql = "insert into member (last_name, first_name, age) values (:last_name, :first_name, :age)";
$stmh = $pdo->prepare($sql);
$stmh->bindvalue(':last_name', $_post['last_name'], pdo::param_str);
$stmh->bindvalue(':first_name', $_post['first_name'], pdo::param_str);
$stmh->bindvalue(':age', $_post['age'], pdo::param_int);
$pdo->execute();
$pdo->commit();
print"データを".$stmh->rowcount()."件挿入しました。<br>";
} catch (PDOException $exception) {
$pdo->rollback();
print"エラー2:".$exception->getMessage();
}
?>
MySQLへの接続はできているようなのですが、DBの選択がなされていないようです。
DB(スキーマ)phptxと、テーブルmemberはMySQL上に存在していることは確認済みです。
ファイルの実行結果は
接続しましたエラー2:SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
となります。ご教示いただきたく、よろしくお願い申し上げます。