スクリプト|データ|データベース|詳しい説明
(著者:王海博)
インターネットが急速に発展し、電子商取引ウェブサイトが際限なく出現する現状において、ウェブサイト開発の効率と品質に対する要求はますます高まっています。
複雑な構造と膨大なコンテンツを持つ大規模なウェブサイトの場合、動的で便利なウェブサイトの管理を実現する必要があります。データ管理はデータベース システムのサポートから切り離せません。 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,
Inトロ・バーチャー(255 ),
ResuFile longblob,
KEY ID(ID)
:
./mysql-u root-p
Enter Password:
データベースパスワードを入力すると、テーブルResumeは自動的に正常に作成されました。このうち、ResuFile フィールドは longbolb 型であり、バイナリ Word 文書を格納するために使用されます。
2. データベースアクセスプロセス
PHPのデータベースへのアクセスには、通常、データベースシステムに接続→データベースを選択→SQLステートメントを実行→結果セットを閉じる→データベース接続を閉じる→終了という手順が含まれます。
(1) データベースへの接続
データベースへの接続は、ユーザープログラムからデータベースシステムへの対話チャネルを確立するプロセスです。 MySQL データベースに接続するステートメントは次のとおりです:
?
$LinkID=@mysql_connect("localhost", "root" , "") または die("データベースサーバーに接続できません! データベースサーバーが接続できない可能性がありますbe starting、またはユーザー名 パスワードが間違っています! ");
?〉
このうち、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 = "insert into 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,$; LinkID); //実行し、結果セットを変数に保存します $result
$num= mysql_num_rows($result) //クエリによって返されたレコード行数を取得します
if($num == 0)
{
echo "レコードが見つかりません";
exit()
}
while($row=mysql_fetch_array($result)) // 結果セットから次のデータ行を配列 $row に取得します
{
echo $row["ID"]." ".$row["Name"]." ".$row["Intro"]."
"
// の値にアクセスするフィールド名インデックスを使用した配列変数
}
?〉
上記の操作は合計 2 つのデータベース操作を実行しました。 1 回目は挿入操作、2 回目はクエリ操作です。プログラムはまず現在のユーザーの 1 日の記録を挿入し、次にデータベース内のすべての個人的な状況を表示します。
(4) リソースの解放
操作の終了時に、結果セット、結果セット、データベース接続リソースが解放されます。
@mysql_free_result($result);
@mysql_close($LinkID)
データベースサーバーとの継続的な接続を確立して効率を高めることができます。 。データベース サーバーへの各接続には時間がかかり、大きなリソース オーバーヘッドが必要となるため、連続接続の方が比較的効果的です。
継続的な接続を確立する方法は、データベースに接続するときに mysql_connect() の代わりに関数 mysql_pconnect() を呼び出すことです。確立された継続的接続は、このプログラムの終了時に mysql_close() を呼び出して閉じる必要はありません。次回プログラムがここで mysql_pconnect() を実行すると、システムは実際にデータベースに接続せずに、確立された継続的接続の ID 番号を自動的に直接返します。