PHP2

Last-modified: 2026-01-12 (月) 15:22:23

背景紫.png

データーベース

データーベース作成

通常のプログラムではなくXAMPPのMysqlでデーターベースの表を作成する。
XAMPPを起動→Mysqlのadminをクリック→左のバーのデーターベース名を選択(最初の場合は新規作成から新しく作る)→上バーのSQLを押す
Mysqlのプログラムを入れる→実行
データーベースの表が作成できる。

プログラム説明
データーベース表作成「練習の表」CREATE TABLE 練習の表 (
タイトル「番号、数字、優先キー、自動割り振り」番号 INT PRIMARY KEY AUTO_INCREMENT,PRIMARY KEY は表の中心になるタイトル。
同じ値を持つものがなく、必ず値を入れる必要がある。検索が速くなる。
途中のテキストには「,」がいるが最後のテキストには「,」がいらない。
タイトル「タイトル1、文字、空でない」タイトル1 VARCHAR(255) NOT NULL,
タイトル「画像、データ、空でない」画像 LONGBLOB NOT NULL
データーベース表閉じる);

データベースの表削除

上バーの操作を押す→下にあるテーブルを削除するを押す


データーベース接続

ここからはPHPのプログラム
接続.php

プログラム説明
データーベース接続「サーバー名、データーベース名、ユーザー名、パスワード」try {
$pdo = new PDO("mysql:host=○○;dbname=△△;charset=utf8mb4", "××", "□□");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
} catch (PDOException $e) {
echo "接続失敗: " . $e->getMessage();
}
○○はホストのサーバー名 △△はデーターベース名
××はユーザー名 □□はパスワード名
XAMPPの場合
サーバー名 localhost  データーベース名 自分で作成した名前
ユーザー名 root  パスワード 空白にする
エラー時に例外を投げて伝える。本物のプリペアドステートメントを使いセキュリティ強化する。

他のページで接続するときrequire_once '接続.php';とかき接続のプログラムを読み込む。
} catch (PDOException $e) {の上に直接接続時のプログラムを書くこともできる。

データーベース入力

プログラム説明
接続枠上require_once '接続.php';
try {
入力「練習の表 タイトル1=サンプルA タイトル2=サンプルB」$stmt = $pdo->prepare("INSERT INTO 練習の表 (タイトル1, タイトル2) VALUES (?, ?)");
$stmt->execute([$サンプルA, $サンプルB]);
?の文字のところにexecute内の[]の中の内容が入る。
?を使わずにそのままユーザーが入れた内容を使ってはいけない。
よくない例$stmt = $pdo->prepare("INSERT INTO 練習の表 (タイトル1, タイトル2) VALUES ($サンプルA, $サンプルB)");$Aの中身がSQLのプログラムだと実行してしまう。SQLインジェクションという。
接続枠下} catch (PDOException $e) { echo "データ取得エラー: " . htmlspecialchars($e->getMessage()); }


データーベース上書き変更

プログラム説明
接続枠上require_once '接続.php';
try {
上書き「練習の表 番号が1の行 タイトル1=新しいタイトルA タイトル2=新しいタイトルB」stmt = $pdo->prepare("UPDATE 練習の表 SET タイトル1 = ?, タイトル2 = ? WHERE 番号 = ?");
$stmt->execute([$新しいタイトルA, $新しいタイトルB, $A]);
番号が1の部分のタイトル1とタイトル2を上書き
番号が存在しない場合は追加されない。
接続枠下} catch (PDOException $e) { echo "データ取得エラー: " . htmlspecialchars($e->getMessage()); }


データーベース削除

プログラム説明
接続枠上require_once '接続.php';
try {
削除「練習の表 番号が1の行」$stmt = $pdo->prepare("DELETE FROM 練習の表 WHERE 番号 = ?");
$stmt->execute([$A]);
番号が1の行の内容を削除
接続枠下} catch (PDOException $e) { echo "データ取得エラー: " . htmlspecialchars($e->getMessage()); }

データーベース表示

プログラム説明
接続枠上require_once '接続.php';
try {
表示「すべて」$stmt = $pdo->query("SELECT * FROM 練習の表");
繰り返し処理while ($行 = $stmt->fetch(PDO::FETCH_ASSOC)) {
テキスト表示「$行["タイトル1"]」print 枠($行['タイトル'])."<br>";表示するときにfunction 枠($テキスト){return htmlspecialchars($テキスト, ENT_QUOTES, 'UTF-8');}のプログラムを使う
テキスト表示「$行["画像"]」$画像 = base64_encode($行['画像']);
print "<img src='data:image/jpeg;base64,<?=$画像?>}' alt='画像'><br>";
画像のときはimgのタグを使って書く。
<?php print "〇〇";?>は省略して<?=〇〇?>という風に書ける。
繰り返し処理閉じる}
接続枠下} catch (PDOException $e) { echo "データ取得エラー: " . htmlspecialchars($e->getMessage()); }