1
1

More than 1 year has passed since last update.

【Docker環境】.envファイルに保存したDB接続情報の環境変数を用いてデータベースへ接続し、HTMLのformから受け取った値をDBへ保存する

Last updated at Posted at 2023-02-15

Dockerをスタンバイ

Dockerアプリを起動

コードのディレクトリへ cd で移動

docker-composeを開始

docker-compose up

HTMLを書く

formの項目ごとにdivタグで纏める

例1

<div>
   <label for="name">会社名</label>
   <input type="text" id="name" name="name">
</div>

例2
各ラジオボタンはid名で区別

<div>
    <input type="radio" name="status" id="status1" value="選択肢1">
    <label for="status1">選択肢1</label>
<input type="radio" name="status" id="status2" value="選択肢2">
    <label for="status2">選択肢2</label>
</div>

formのactionに移動するPHPファイルを指定し、methodは当然POST

<form action="next.php" method="POST">

ライブラリ取得やDB接続を行う、使い回し用のphpファイルを作成

ライブラリを呼び出すファイル(Composerが自動生成)をrequire

require __DIR__ . '/../../vendor/autoload.php';

データベースを取得する関数を書き、冒頭で環境変数を取得する

    $dotenv = Dotenv\Dotenv::createImmutable(__DIR__ . '/../..');
    $dotenv->load();
    // 「$_ENV」でも「$_SERVER」でも良い。
    $dbHost = $_ENV['DB_HOST'];
    $dbUsername = $_SERVER['DB_USERNAME'];
    $dbPassword = $_ENV['DB_PASSWORD'];
    $dbDatabase = $_SERVER['DB_DATABASE'];
    $dbInfo = mysqli_connect($dbHost, $dbUsername, $dbPassword, $dbDatabase);


環境変数は.envファイルへ記述

DB_HOST="mydb"
DB_USERNAME="myusername"
DB_PASSWORD="mypassword"
DB_DATABASE="mydbname"

formの値を受け取り、データベースへ保存するphpファイルを作成

冒頭で上記の使い回し用のphpファイルをrequire

require_once __DIR__ . '/lib/another.php';

データベースへ値を保存

受け取った「formからの値(連想配列データ)」と「DB接続情報」を使ってMySQLへ値を保存。


$sql = <<<EOT
INSERT INTO columnname (
    atai1,
    atai2
) VALUES (
    "{$categoryData['atai1']}",
    "{$categoryData['atai2']}"
)
EOT;


if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $categoryData = [
        'atai1' => $_POST['atai1'],
        'atai2' => $_POST['atai2']
    ];
}
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1