こんにちは。今日はOracle DatabaseにWebページ経由でデータを追加、表示してみたいと思います。
先日の記事でOracle DatabaseにPHPから接続してデータを取得・表示してみましたが、今回はクライアント側(Wwbサイト)からデータの挿入を行なってみます。
使用するデータベースはOracle Cloud Infrastructure(OCI)で作成したOracle Autonomous Databaseです。バージョンはOracle Database 18cです。また、WebページはOCIのコンピュートインスタンス上に立てたものを使用します。
Oracle Databaseにネットワーク経由で接続
以前にOracle Databaseのネットワーク経由での接続方法は書きましたが、改めて記します。
$c = oci_connect('ユーザー名', 'パスワード', '接続記述子);
この様にOCIで作成したOracle Databaseに接続します。次にSQL文を渡し、ステートメントを作成して実行します。*ここではemployeesテーブルを使用します。
$s = oci_parse($c, "SELECT * FROM employees");
$r = oci_execute($s);
これでOracle Databaseに取得しemployeesテーブルからデータを取得することができました。これをhtmlとして表示させます。
echo "<table border='1'>n";
echo "<tr><th>empno</th><th>name</th><th>salary</th><th>comm</th><th>hiredate</th><th>manager</th><th>dept_id</th></tr>";
while ($row = oci_fetch_array($s, OCI_ASSOC+OCI_RETURN_NULLS)) {
echo "<tr>n";
foreach ($row as $item) {
echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "null") . "</td>n";
}
echo "</tr>n";
}
echo "</table>n";
htmlのtableタグで表形式に表示します(過去記事はここまで行いました)。ウェブサイトにアクセスすると以下の様に表示されます。
Databaseにデータを追加する
employeesテーブルにデータを追加するためにhtmlを記述します。postでデータを受け渡しし、insert_data.phpというファイルにデータを挿入するロジックを書きます。
<form method="post" action="insert_data.php">
<textarea rows="1" cols="15" placeholder="id 100~" style="resize: none;" name="id" required="required"></textarea>
<textarea rows="1" cols="15" placeholder="name" style="resize: none;" name="name" required="required"></textarea>
<textarea rows="1" cols="15" placeholder="salary" style="resize: none;" name="salary" required="required"></textarea>
<textarea rows="1" cols="15" placeholder="comm" style="resize: none;" name="comm"></textarea>
<textarea rows="1" cols="15" placeholder="hiredate yy-mm-dd" style="resize: none;" name="hiredate" required="required"></textarea>
<textarea rows="1" cols="15" placeholder="manager" style="resize: none;" name="manager"></textarea>
<textarea rows="1" cols="15" placeholder="dept_id" style="resize: none;" name="dept" required="required"></textarea>
<button type="submit">Submit</button>
</form>
employeesテーブルは従業員番号、名前、給与、ボーナス、雇用年月日、マネジャー、部門番号の計7つの項目で構成されます。それではinsert_data.phpを編集していきます。
/*
oracle databaseに接続する記述(省略)
*/
$id = $_POST['id'];
$name = $_POST['name'];
$salary = $_POST['salary'];
$comm = $_POST['comm'];
$hiredate = $_POST['hiredate'];
$manager = $_POST['manager'];
$dept = $_POST['dept'];
$s = oci_parse($c, "INSERT INTO employees(empno, name, salary, comm, hiredate, manager, dept_id)VALUES(:1, :2, :3, :4, to_date(:5, 'YY-MM-DD'), :6, :7)");
oci_bind_by_name($s, ":1", $id);
oci_bind_by_name($s, ":2", $name);
oci_bind_by_name($s, ":3", $salary);
oci_bind_by_name($s, ":4", $comm);
oci_bind_by_name($s, ":5", $hiredate);
oci_bind_by_name($s, ":6", $manager);
oci_bind_by_name($s, ":7", $dept);
oci_execute($s);
oci_commit($c);
header("Location: /test.php");
oci_bind_by_name()を使用してpostで受け取った変数をバインドしてクエリーに渡し、実行します。
完成:使ってみる
わかりづらいですが、以下の様なフォームが表示されます。実際にデータを送ってみましょう。
適当なデータを複数挿入してみました。すぐにページが更新されテーブルも追加されたデータを含んで表示されます。
上記の書き方は余りセキュアな方法ではないので、実際に使用する際は気をつけたいですね。
おわりに
今日は、クライアント(Webページ)からデータの挿入を行なってみました。特に難しいこともなくデータの挿入ができました。*ちなみにphpファイル内のとじカッコ’)’を忘れていて、全く表示されず十数分頭を抱えていました笑
これでウェブページからのデータの挿入とデータの表示を使うことができる様になったので、ウェブアプリ作成に少し近づきました。
今日も最後までご覧いただきありがとうございました。
コメント