(著者:王 海博) インターネットが急速に発展し、電子商取引ウェブサイトが次々と誕生している現状において、ウェブサイト開発の効率と品質に対する要求はますます高まっています。 複雑な構造と膨大なコンテンツを持つ大規模な Web サイトでは、動的で便利な Web サイトの管理を実現する必要があります。データ管理はデータベース システムのサポートから切り離せません。 CGI 言語を測定する重要な指標は、バックエンド データベースへのアクセス能力、効率などです。 現在人気の PHP スクリプト言語に関しては、その新機能は私たちに新しい感覚をもたらします。オブジェクト指向の設計と開発をサポートします。同時に、Web ページ固有のニーズを満たすために、テンプレート、XML サポートなどが Web サイト開発の新しい方法をもたらすために使用されてきました。言語構造の点では、PHP は C++ 言語に似た構造を持ち、開発を簡素化するためにクラスの概念が導入されています。 PHP には強力なデータベース サポート機能もあります。ここでは、まず例を通じて PHP がデータベースにアクセスする一般的なプロセスを紹介し、次にファイルのデータベース ストレージを通じてデータベースにアクセスする PHP の高度なアプリケーションを紹介します。最後に、データベースクラスの使用例を通じて、真に実践的で効率的なデータベース開発方法を紹介します。 図 1 PHP データベース関数の概要 PHP は、Oracle、dBase、Informix、SQL Server、Sysbase、MySQL など、10 を超える一般的なデータベースをサポートしています。データベースのサポートが充実しているからこそ、PHPの適用範囲が広がり、PHPを使ってさまざまなアプリケーションを開発できるようになりました。 さまざまなデータベースの中でも、MySQL は無料でクロスプラットフォームで使いやすく、アクセス効率が高いため、広く使用されています。多くの中央 Web サイトでは、PHP + MySQL の最適な組み合わせが使用されています。 Oracle は代表的な大規模データベース アプリケーション システムです。設計する Web サイトに大量のデータがあり、高いパフォーマンスと効率性の要件がある場合は、Oracle が適しています。 Win32 プラットフォームでは、SQL Server がより大きな市場を占めています。 PHP は SQL Server にアクセスできます。 PHP はさまざまなデータベースへのアクセス方法をカプセル化しており、異なるデータベース システムの機能も非常に類似しているため、使いやすさが向上しています。 次に、簡単な人材情報交換センター (図 1 参照) を例に、履歴書のオンライン提出と閲覧機能を実装するプログラムを作成し、PHP データベースの動作全体のプロセスを説明します。データベースは最も一般的に使用されている MySQL データベースを使用します。 PHP データベース操作の基本手順 ローカル マシンに ResumeDB という名前のデータベースを作成します。データベースには Resume という名前のテーブルがあります。このテーブルには、履歴書番号、担当者名、個人プロフィール、および Word 形式の履歴書ファイルが保存されます。 1. データベースの作成 /usr/local/mysql/bin ディレクトリに切り替え、コマンド ラインで次のステートメントを実行してデータベースを作成します。 ./mysqladmin-u root-p create ResumeDB パスワードの入力: パスワードの後にパスワードを入力します。プロンプト。データベースを初めて使用する場合、デフォルトのパスワードは空白なので、Enter キーを押してください。 次に、履歴書を保存するためのテーブルを作成します。 次の内容のテキスト ファイル Resume.sql を作成します: use ResumeDB; CREATE TABLE Resume ( ID tinyint(4) NOT NULL auto_increment, Name varchar(10) NOT NULL, Intro varchar(255), ResuFile longblob, PRIMARY KEY (ID) , KEY ID (ID) ); My の実行ディレクトリ /usr/local/mysql/bin に入れて、次のコマンドを実行します: ./mysql-u root-p このうち、mysql_connect()という関数はデータベースサーバーとの接続を確立するために使用されます。 3 つのパラメータは、データベース サーバーのホスト名 (IP も可能)、データベース ユーザー名、およびユーザー パスワードです。関数の戻り値は、このデータベース接続を表すために使用されます。 このコマンドからわかるように、ローカル マシンではないマシン名をデータベース サーバーとして指定できます。これにより、データをオフサイトに保管し、データベースを安全に分離することが可能になります。外部ユーザーは、多くの場合、WWW サーバーへの直接アクセス権を持っています。データベース システムが WWW サーバー上に直接配置されている場合、セキュリティ上のリスクが生じる可能性があります。また、データベース システムがファイアウォールの内側のコンピュータ上に配置されている場合、PHP は LAN 経由でデータベースにアクセスでき、LAN 内のコンピュータは外部からは見えません。このようにして、データベースは外部攻撃から保護されます。 関数の前の「@」記号は、このコマンドのエラー情報の表示を制限するために使用されます。関数呼び出しでエラーが発生した場合は、またはに続くステートメントが実行されます。die() 関数は、引用符で囲まれた内容をユーザーに出力した後、プログラムが実行を終了することを意味します。これは、データベース接続エラーが発生したときにユーザーに説明のつかない専門用語が大量に表示されるのを防ぎ、代わりにカスタマイズされたエラー メッセージを表示するために行われます。ただし、デバッグ時にエラー メッセージをブロックすることはできず、エラーが発生した後に問題がどこにあるのかを特定することができません。 (2) データベースの選択 データベースシステムには複数のデータベースを含めることができます。データベース サーバーとの接続を確立した後、どのデータベースを使用するかをシステムに伝える必要があります。データベースを選択するコマンドは次のとおりです: ? @mysql_select_db("ResumeDB",$LinkID) または die("データベースの選択中にエラーが発生しました。指定したデータベースが存在しない可能性があります!"); データベースを選択するときに、指定されるのは、データベース名とサーバー接続番号です。 データベース サーバーを 1 つだけ使用する場合は、$LinkID を省略でき、システムは最も近いデータベース接続を自動的に見つけて使用します。ただし、大規模なサイトを実装する場合は、マルチホストおよびマルチデータベース システムに遭遇する必要があります。このとき、データベース接続パラメータは省略できません。 (3) データベースへのアクセス さて、データベースへの接続を確立し、データベースを選択しました。次に、SQL ステートメントを実行します。 SQL ステートメントの使いやすく強力な機能により、ほとんどのデータベース操作が完了します。 まず個人情報レコードをデータベースに書き込んでから、それを表示します。 〈? $Name= "OpenBall"; //実際の動作では$Nameと$Introはブラウザから渡される値 $Intro = "OpenBall"; $query = "Resume(Name) ,Intro)values($Name, $Intro)"; //SQL ステートメントを生成 $result = @mysql_query("$query",$LinkID); //実行 if(! $result) echo "データの挿入に失敗しました!"; $query= "select ID,Name,Intro from Resume"; // SQL ステートメントを生成 $result = mysql_query($query,$LinkID) // 結果セットを変数 $result に保存 $num= mysql_num_rows($) result ); //クエリによって返されるレコード行数を取得します if($num == 0) { データの次の行が配列 $row{ echo $row["ID"] に入れられます。" ".$ row["Name"]." ".$row["Intro"]."
" //フィールドを使用して、配列変数の値にアクセスするための名前付きインデックス} ?> 上記の操作は合計 2 つのデータベースを実行しました。オペレーション。 1 回目は挿入操作、2 回目はクエリ操作です。プログラムはまず現在のユーザーの 1 日の記録を挿入し、次にデータベース内のすべての個人情報を表示します。 (4) リソースの解放 操作終了時に結果セットが解放され、結果セットとデータベース接続リソースが解放されます。 ハンドwelcomeloom\|@mysql_close($LinkID)データベース サーバーへの各接続には時間がかかり、大きなリソース オーバーヘッドが必要となるため、連続接続の方が比較的効果的です。 継続的な接続を確立する方法は、データベースに接続するときに mysql_connect() の代わりに関数 mysql_pconnect() を呼び出すことです。確立された継続的接続は、このプログラムの終了時に mysql_close() を呼び出して閉じる必要はありません。次回プログラムがここで mysql_pconnect() を実行すると、システムは実際にデータベースに接続せずに、確立された継続的接続の ID 番号を自動的に直接返します。