基本!PHP PDOでデータを登録

こんにちは、さるまりんです。

最近はフレームワークを使っていてあまりやっていなかったのですが、素のPHPでデータベースにデータを登録する機会があったのでシンプルなメモとしてPDOを使ったinsertを残しておきます。

コードはこんな感じです

// ローカルホストのデータベースsaludbに接続
$conn     = 'mysql:dbname=saludb;host=localhost';
// ユーザーはsalu
$user     = 'salu';
// パスワードはsalupswd
$password = 'salupswd';

try {
    // データベースに接続します
    $dbh = new PDO($conn, $user, $password);

    // できた?
    if ($dbh == null) die('データベース接続失敗');

    // 実行するSQLです
    $sql = 'insert into salu_accesses (name, access_ts) values (:name, :access_dt)';

    // プリペアドステートメントを準備します
    $sth = $dbh->prepare($sql);

    // データを準備します
    $data = [
        ':name' => 'salumarine',
        'access_ts' => '2023/08/14 07:30:00',
    ];

    // データを渡してSQLを実行します
    $result = $sth->execute($data);


    // 後片付けです
    $sth = null;
    $dbh = null;
} catch (PDOException $e) {
    // 何かしらエラーが発生しています
    die('エラー発生 : ' . $e->getMessage());
}

コード内にコメントで記しましたが

1. new PDO()で接続
2. prepare()でステートメントを準備
3. データを準備
4. execute()で実行

の流れです。

updateでもdeleteでもこの流れは同じです。

データが文字化けしてしまう場合はデータベースに接続できた後に
環境に合わせて

$dbh->query('SET NAMES sjis');

$dbh->query('SET NAMES utf8');

などします。文字化けなおったかな。

簡単なことなんですがやらないと忘れてしまいます。
たまには基本に戻ることも大切かと思っています。

読んでくださってありがとうございました。
それではまた!