php PDOを使ってmysqlに接続する

  • 作成日 2021.12.14
  • php
php PDOを使ってmysqlに接続する

phpで、PDOを使用して、mysqlに接続するサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Stream release 8
  • php 8.0.0
  • nginx 1.14.1

mysql接続

以下は、PDOを使用して、mysqlに接続するサンプルコードとなります。

基本的な接続情報を記述すれば、接続することができます。

<?php

// ホスト名や接続するDBを設定
$dsn = 'mysql:host=localhost;dbname=sample_db';

// 接続ユーザー名
$user = 'testuser';

// 接続パスワード
$password = 'password';

try {
    // PDOインスタンスを生成
    $dbh = new PDO($dsn, $user, $password,
    array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    ));
    echo '接続成功';

} catch (PDOException $e) {

    echo '接続失敗' . $e->getMessage();
    // 終了
    die();
}

パスワードが間違っていた場合などは、catchでエラーを取得することができます。

接続失敗SQLSTATE[HY000] [1045] Access denied for user 'testuser'@'localhost' (using password: YES

pdoを使用して、selectを実行してみます。

取得するtable「sample」の内容

<?php

// ホスト名や接続するDBを設定
$dsn = 'mysql:host=localhost;dbname=sample_db';

// 接続ユーザー名
$user = 'testuser';

// 接続パスワード
$password = 'password';

try {
    // PDOインスタンスを生成
    $dbh = new PDO(
        $dsn,
        $user,
        $password,
        array(
            // 静的プレースホルダ
            PDO::ATTR_EMULATE_PREPARES => false,
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
        )
    );

    echo '接続成功' . PHP_EOL;

    $id = 1;
    $prepare = $dbh->prepare('SELECT title FROM sample WHERE id = ?');
    $prepare->bindValue(1, $id, PDO::PARAM_INT);
    $prepare->execute();

    $result = $prepare->fetch(PDO::FETCH_ASSOC);
    print_r($result);
    
} catch (PDOException $e) {

    echo '接続失敗' . $e->getMessage();
    // 終了
    die();
}

実行結果

接続成功
Array
(
    [title] => title1
)