見出し画像

フォーム入力 ⇒ MYSQL ⇒ EXCEL抽出

WEBのフォーム入力からMYSQLへ保存して、そのデータをExcelで抽出してみましょう。事前にMAMPやMYSQLのODBCドライバが必要となります。


・まずはWEBのフォーム入力画面を適当に作成します。

    <form action="submit.php" method="post">
        <input type="text" name="name" placeholder="名前を入力してください"><br>
        <input type="number" name="age" placeholder="年齢を入力してください"><br>
        <button type="submit">送信する</button>
    </form>

名前と年齢を入力してもらい、送信ボタンを押すと、submit.phpという場所にデータが送信されるようなフォームになります。


・フォームデータの受取りとMYSQLへのデータ送信のphpの作成

<?php
// フォームからのデータ受け取り
$person_name = filter_input(INPUT_POST, "name", FILTER_SANITIZE_SPECIAL_CHARS);
$person_age = filter_input(INPUT_POST, "age", FILTER_SANITIZE_SPECIAL_CHARS);

// MYSQLへの接続
$db = new mysqli("localhost:8889", "root", "root", "mydb");

// MYSQLへのデータ送信
$stmt = $db->prepare("insert into person_table(p_name, p_age) values(?, ?)");
if(!$stmt):
    die($db->error);
endif;
$stmt->bind_param("si", $person_name, $person_age);
$ret = $stmt->execute();

// データ送信できれば表示させる内容
if($ret):
    echo "データを登録しました";
else: 
    echo $db->error;
endif;

?>

filter_inputでデータを受け取っていますが、filter_inputにはSQLインジェクション対策だけではなく、色々なフィルタリングができるみたいです。emailだと、emailで使用されない特殊文字を取り除いたフィルタリングが用意されていたりなど…。

SQLインジェクション対策のため、SQLの実行にはprepare, bind_param, executeの順で使用しています。

prepareでは「person_table」というデータテーブルの「p_name」「p_age」というカラムにあとで記載するvaluesを2つを?で表して、挿入する準備をしています。

bind_paramでは、送信する型と値を指定してあげます。型の記載方法は以下。今回はperson_nameは文字なので、s person_ageは数字なので、 i

最後にexecuteでSQL文を実施して、データベースに送信します。試しに 田中 20 と入力して送信すると、MYSQLにも反映されています。



ExcelでMYSQLのデータを読み取る

ExcelでMYSQLのデータを取得するにはODBCドライバのダウンロードが必要となりますが、以下の手順でデータの取得からExcelでデータを読み取ることができます。


この記事が気に入ったらサポートをしてみませんか?