

「PHP7+MariaDB/MySQLマスターブック」というテキストを使って独学中です。  
テキスト内のサンプルプログラムをコーディングすると、表題のエラーになります。

[code]

    <?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();
    }
    
    ?>
    
[/code]

MySQLへの接続はできているようなのですが、DBの選択がなされていないようです。  
DB（スキーマ）phptxと、テーブルmemberはMySQL上に存在していることは確認済みです。  
ファイルの実行結果は

[code]

    接続しましたエラー2:SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected
    
[/code]

となります。ご教示いただきたく、よろしくお願い申し上げます。


CC BY-SA 4.0
2018-04-15T00:03:06.407
43245
2019-07-17T10:36:41.627
2019-07-17T02:07:36.733
3060
28014
question
php mysql
SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected

[code]

    $dsn = "$db_type:host=$db_host;db_name=$db_name;charset=utf8";
    
[/code]

↓

[code]

    $dsn = "$db_type:host=$db_host;dbname=$db_name;charset=utf8";
    
[/code]


CC BY-SA 4.0
2018-04-15T00:50:11.050
43247
2019-07-17T10:36:41.627
2019-07-17T10:36:41.627
2376
43245
answer