Webページ経由でOracle Databaseにデータを追加した話

Database

こんにちは。今日は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ファイル内のとじカッコ’)’を忘れていて全く表示されず十数分頭を抱えていました笑

これでウェブページからのデータの挿入とデータの表示を使うことができる様になったので、ウェブアプリ作成に少し近づきました。

今日も最後までご覧いただきありがとうございました。

コメント

タイトルとURLをコピーしました