【 PHP 】PHP8に入門してみた 192日目 PHPの基本 ( データベース SQLクエリ発行 )

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

データベース

データベースにデータを登録

実際に登録してみます。

insert_form.php

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <title>データの登録</title>
    <!-- Bootstrapを有効化 -->
    <!-- <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" /> -->
</head>

<body>
    <form method="POST" action="insert_process.php">
        <div>
            <label for="isbn">ISBNコード:</label><br />
            <input id="isbn" type="text" name="isbn" size="25" maxlength="20" />
        </div>
        <div>
            <label for="title">書名:</label><br />
            <input id="title" type="text" name="title" size="35" maxlength="150" />
        </div>
        <div>
            <label for="price">価格:</label><br />
            <input id="price" type="text" name="price" size="6" maxlength="5" />円
        </div>
        <div>
            <label for="publish">出版社:</label><br />
            <input id="publish" type="text" name="publish" size="25" maxlength="30" />
        </div>
        <div>
            <label for="published">刊行日:</label><br />
            <input id="published" type="text" name="published" size="15" maxlength="10" />
        </div>
        <div>
            <input type="submit" value="登録" />
        </div>
    </form>
</body>

</html>

insert_process.php

<!DOCTYPE html>
<?php
require_once './Encode.php';
require_once './DbManager.php';

try {
    // データベースへの接続を確立
    $db = getDb();
    // INSERT命令の準備(名前付きパラメータ)
    $stt = $db->prepare('INSERT INTO book(isbn, title, price, publish, published) VALUES(:isbn, :title, :price, :publish, :published)');

    // INSERT命令にぽstデータの内容をセット
    $stt->bindValue(':isbn', $_POST['isbn']);
    $stt->bindValue(':title', $_POST['title']);
    $stt->bindValue(':price', $_POST['price']);
    $stt->bindValue(':publish', $_POST['publish']);
    $stt->bindValue(':published', $_POST['published']);

    // INSERT命令を実行
    $stt->execute();

    // 処理後は入力フォームにリダイレクト
    header('Location: http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/insert_form.php');
} catch (PDOException $e) {
    die("エラーメッセージ:{$e->getMessage()}");
}

入力してみます。

登録ボタンを押すと入力フォームにリダイレクトされました。

本当に登録されたのか確認しました。

 

メモ

プレイスホルダーは重要。

プレイスホルダーは「名前付きパラメータ」と「名前なしパラメータ」のどちらかを選択できます。

サンプルコードは「名前付きパラメータ」で指定しました。

「名前なしパラメータ」を使用する場合は:isbnの部分を?に置き換えて、バインドする際は番号を指定します。

番号は1から始まります!

 

PHPPHP

Posted by raika@blog