[技術情報]
PHP4 + PostgreSQL7 で構築する Web-DB 入門 |
第 1 回 〜スクリプト言語 PHP 編〜 |
株式会社オージス総研 マーケティング企画部 山井 智博 |
1. はじめに。
2. PHP ってなんですか?
3. とりあえずPHPのソースを覗いてみよう。
4. フォームの値を取得してみる。
5. なんちゃって(?)オブジェクト指向プログラミング。
6. おわりに。
PHP4.0.5を使用します。
PostgreSQL7.1.2
PostgreSQL を筆頭に、Oracle, DB2, Informix, Sybase, SQLServer, ODBC, MySQL をサポートしており、それぞれのデータベースへの接続関数、クエリ発行関数等が既に用意されています。言語設計がとにかく易しい
例えば、PostgreSQL のデータベースに接続するには、既に用意されている pg_connect() という関数をコールするだけで、簡単に接続することが可能です。
(例)$dbHandle = pg_connect("host=localhost port=5432 dbname=testDB");
文法は、Perl + C といった感じですが、とにかく単純で(すなわち覚えるべきことが少ない)、プログラム経験者であれば 1 日 PHP 本を読むだけで、大抵のことは出来るようになります。HTML フォームの値を簡単に取得することが可能
文法が単純なだけに、プログラマは沢山用意されている関数をいかに使いこなすか、といった点だけに集中することができます。
Java もそうでしたが、これからの言語はこうあって欲しい、と思います (末端社員の主張 2)。
個人的には、これが PHP を利用する上での一番の魅力だと考えているのですが、例えば、<FORM><INPUT TYPE="text" NAME="hoge"></FORM> と書くだけで、$hoge という変数が勝手に作成され、入力された値を取得することが可能です。CGI よりも動作が高速である
これについては、後ほど、詳しく説明します。
Web サーバの代名詞とも言える Apache にモジュール(DSO : Dynamic Shared Object)として組み込むことで、CGI よりも高速に動作すると言われています。デバッグが容易である
Web 系システムの構築でよく使用される手段として、CGI が挙げられますが、これは、クライアントからの要求があっただけのプロセスをサーバ側に発生させます。すなわち、多くのリクエストがサーバに送信された場合、サーバ側のリソースをプロセス分だけ消費し、レスポンスが極端に遅くなる可能性があります。
PHPでは、Apache の DSOとして実行させた場合、クライアントのリクエストは Apache 内で処理され、多くのリクエストが集中するケースでは、CGI よりも高速に動作するとされています。
エラーが発生すると、エラーの発生したスクリプトの行番号と原因を出力してくれます。
CGIによる開発のように、原因不明の「Internal Server Error」に泣かされることがありません。
<HTML> <BODY> <?php print "Hello World !!"; ?> </BODY> </HTML> |
<HTML> <BODY> <?php // 配列の作成(宣言がなされていないことに注目!) $array[0] = 4; $array[1] = 3; $array[2] = 1; $array[3] = 5; $array[4] = 2; // 配列をソートする $sortedArray = getSortedArray($array); // ソート結果を表示する for( $i=0; $i<count($sortedArray); $i++ ) { print "array[$i] = " . $sortedArray[$i] . "<BR>\n"; } exit(); /** * バブルソートでソートした配列を返す * * @param $data ソートするint型配列 * @return $data ソートしたint型配列 **/ function getSortedArray($data) { for( $i=0; $i<count($data); $i++ ) { for( $j=count($data)-1; $j>$i; $j-- ) { // 隣り合う配列要素を比較する if( $data[$j] < $data[$j-1] ) { $tmp = $data[$j]; $data[$j] = $data[$j-1]; $data[$j-1] = $tmp; } } } return $data; } ?> </BODY> </HTML> |
(1) 配列 $array が宣言されることなく使用されている。
(2) 関数に返り値の定義がない。
(3) 関数の引数に、型の指定がない。
boolean
integer
double
string
object
resource
NULL
<HTML> <BODY> <!- テキストフィールドと送信ボタンを表示する -> <FORM ACTION="sample.php" METHOD="POST"> 好きな文字を入力してください: <INPUT TYPE="text" NAME="val" VALUE=""><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> <BR> <?php print "入力された値は、<B>" . $val . " </B>です。"; ?> </BODY> </HTML> |
<HTML> <BODY> <!- 複数選択可能なリストボックスと、送信ボタンを表示する -> <FORM ACTION="sample.php" METHOD="POST"> <SELECT NAME="multiple[]" MULTIPLE> <OPTION VALUE="Java">java</OPTION> <OPTION VALUE="Smalltalk">smalltalk</OPTION> <OPTION VALUE="ruby">ruby</OPTION> <OPTION VALUE="C++">C++</OPTION> </SELECT> <BR><BR> <INPUT TYPE="submit" VALUE="送信"> </FORM> <BR> <?php // 配列の要素を表示する for($i=0; $i<count($multiple); $i++) { print "multiple[$i] = ". $multiple[$i] . "<BR>"; } ?> </BODY> </HTML> |
『PHP4でカンタンWebDB構築ガイド』 秀和システム 2001年▼ 参考リンク
『PHP4徹底攻略』 ソフトバンク 2000年
PHP 公式Webサイト(英語)
日本 PHP ユーザ会
PostgreSQL 本家(英語)
日本 PostgreSQL ユーザ会
Apache 公式Webサイト(英語)
© 2001 OGIS-RI Co., Ltd. |
|