📖

コピペで使えるPHPとデータベース接続

2024/12/09に公開

プラットフォーム

PHPmyAdmin
VScode

データベース接続

connect_datedase.php
<?php
$host = "localhost:※※※※";
$user = "※※※※";
$password = "※※※※";
$dbname = "※※※※";
$dsn = "mysql:host={$host};dbname={$dbname};charset=utf8";
?>

$host: データベースサーバーのホスト名とポート番号。localhost:※※※※は、ローカルマシン上でMySQLが動作している場合の標準設定。

$user: データベース接続に使用するユーザー名。

$password: データベース接続に使用するパスワード。空文字列("")として設定されていますが、実際の環境ではセキュリティ上、適切なパスワードを設定する必要があります。

$dbname: 使用するデータベース名。

DSN: PDO(PHP Data Objects)を使用してデータベースに接続するための設定文字列。

データベース接続確認用

connection_confirm.php
<?php
try {
    $pdo = new PDO($dsn , $user , $password);
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "データベース{$dbname}接続<br>";

    $sql = "SELECT * FROM Test001";
    $stm = $pdo->prepare($sql);
    $stm->execute();
    $result = $stm->fetchAll(PDO::FETCH_ASSOC);
    foreach ($result as $row) {
    }
}
} catch(Exception $e) {
    echo '<span>エラー</span><br>';
    echo $e->getMessage();
    exit();
}
?>

1.try-catch構文
try内部でエラーが起きた時それ以降の処理を中断してcatch内部の処理を実行する

2.データベース接続 (PDO オブジェクトの作成)
PDO(PHP Data Objects)はデータベースへの接続を抽象化するクラスです。
dsn(データソース名)、user(ユーザー名)、$password(パスワード)を使って接続します。
$dsnは通常、接続するデータベースの種類やホスト名、データベース名を指定します(例: mysql:host=localhost;dbname=testdb;charset=utf8)。

3.PDOの設定
PDO::ATTR_EMULATE_PREPARES: ネイティブのプリペアドステートメントを使用するかを設定します(falseでネイティブ使用)。
PDO::ATTR_ERRMODE: エラーモードを例外(PDO::ERRMODE_EXCEPTION)に設定し、エラー発生時に例外を投げます。

4.SQLクエリの準備と実行
$sqlに実行するSQL文を記載。
pdo->prepare()でSQL文をプリペアドステートメントとして準備し、stm->execute()で実行します。

5.データ取得
fetchAll(PDO::FETCH_ASSOC)で全ての結果を取得します。
PDO::FETCH_ASSOCにより、連想配列形式でデータが返されます(キーがカラム名、値がそのデータ)。

6.データの処理
$resultに含まれる各行データを1つずつ処理します。
実際には、この部分でHTML表示やデータ加工を行うコードが入ることが多いです。

7.エラーハンドリング
例外がキャッチされるとエラーが表示されます。
$e->getMessage()でエラーの詳細情報を取得可能です。

追記

ただこのままではクロスサイトスクリプティング(XSS)やSQLインジェクション攻撃などに弱いので、
本番環境で実行する際は実装しないといけません

Discussion