コピペで使えるPHPとデータベース接続
プラットフォーム
PHPmyAdmin
VScode
データベース接続
<?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)を使用してデータベースに接続するための設定文字列。
データベース接続確認用
<?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は通常、接続するデータベースの種類やホスト名、データベース名を指定します(例: mysql:host=localhost;dbname=testdb;charset=utf8)。
3.PDOの設定
PDO::ATTR_EMULATE_PREPARES: ネイティブのプリペアドステートメントを使用するかを設定します(falseでネイティブ使用)。
PDO::ATTR_ERRMODE: エラーモードを例外(PDO::ERRMODE_EXCEPTION)に設定し、エラー発生時に例外を投げます。
4.SQLクエリの準備と実行
$sqlに実行するSQL文を記載。
5.データ取得
fetchAll(PDO::FETCH_ASSOC)で全ての結果を取得します。
PDO::FETCH_ASSOCにより、連想配列形式でデータが返されます(キーがカラム名、値がそのデータ)。
6.データの処理
$resultに含まれる各行データを1つずつ処理します。
実際には、この部分でHTML表示やデータ加工を行うコードが入ることが多いです。
7.エラーハンドリング
例外がキャッチされるとエラーが表示されます。
$e->getMessage()でエラーの詳細情報を取得可能です。
追記
ただこのままではクロスサイトスクリプティング(XSS)やSQLインジェクション攻撃などに弱いので、
本番環境で実行する際は実装しないといけません
Discussion