データ|データベース
多くの CGI 言語の中でも、PHP はそのシンプルさと速度により徐々に成長しており、PHP を使用してプログラムを開発する人が増えています。一般に、PHP で使用されるデータベースはテキストと MYSQL の 2 つです。テキストデータベースは読み書きが遅く、データが一定量に達すると、速度が大幅に低下したり、崩壊したりすることがあります。 MYSQL は高速で強力ですが、一般の空き容量が MYSQL をサポートしていないため、一般のアマチュア ユーザーにとって手頃な価格ではありません (ホストを持っている友人は以下を読まないでください)
著者が今日紹介したもの DBM データベースです。 DBM はバークレー大学によって開発されたファイル/テキスト データベースです。BSD システムにはインストールされていませんが、PHP4.03 には DBM サポートが追加されています。したがって、DBM は、PHP をサポートするほとんどのスペースでサポートされます (PHP をサポートするスペースの詳細については、www.zphp.com を参照してください)。以下では、PHP でのデータベースとしての DBM の使用方法を段階的に紹介します。あなたのスペースは DBM メソッドをサポートしています:
次のプログラムを入力してください:
------------------------------------- ---------- -------------
?> ---------- -----------------------------
dbmtest.php として保存し、実行します出力関数が定義されていないことを確認します。定義されていない場合は、おめでとうございます...
2. PHP で DBM を使用するための基本関数:
1. int dbmopen(string filepath, string mode);ここで、filepath は DBM データベースへのパスであり、mode には 4 つのパラメータがあります。「r」はデータベースを読み取り専用モードで開きます。「w」はデータベースを読み取り/書き込みモードで開きます。「c」はデータベースを読み取り専用モードで開きます。書き込みモードで、存在しない場合は作成します。「n」は既存のデータベースを削除し、読み取り/書き込みモードのデータベースで開きます。
2. boolean dbmclose(int handle); すでに開いている DBM データベースを閉じ、同時にハンドルを解放します。
3. string dbmfetch(int handle, string key); オープンされているハンドル データベースのキーに対応する値を取得します。
4. boolean dbmexists(int handle, string key); 開かれたハンドル データベースにキーが存在するかどうかを判断します。
5. string dbmfirstkey(int handle); 開かれたハンドル データベースの物理的な最初のキーを取得します。
6. string dbmnextkey(int handle, string key);
開かれたハンドル データベース内のキーに対応する次のキーを取得します (dbmnextkey と dbmfirstkey は dbm トラバーサル検索を実装します!)
7. boolean dbminsert(int handle, string) key、string value);
開いたハンドル データベースにキーを挿入し、そのキーがすでに存在する場合は false が返されます。
8. boolean dbmreplace(int handle, string key, string value);
すでに開いているハンドルデータベースのキーに対応する値を値に置き換えます。キーが存在しない場合は、作成に戻ります。
9. boolean dbmdelete(int handle, string key); 開かれたハンドル データベースのキーを削除します。
3. DBM を使用する際の注意点:
1. DBM データベースは、単純なキーと値の配置のみを備えています。以下に続きます (ここでは区切り文字として「|!:!|」を使用します)
Name|!:!|TelNo|!:!|MailAdd //名前、電話番号、メールアドレスは別々に保存されます
読み取り方法は次のとおりです。 :
-------------------------------------------------- -
$ data=explode('|!:!|'dbmfetch($dbmid,$key));
//$data[o] は名前に対応し、$data[1] は電話番号に対応します。 data[2]はメールアドレスに対応します
- -------------------------------------- ----------- -
2. DBM 自体は物理的な順序を持たずにデータを保存し、独自の処理を通じてのみソートできます (以下を参照)。
3. DBM はテキストとは異なります。つまり、一度作成した db ファイルを別のホストに転送することはできません。
4. NT では、DBM のキーに対応する値の長さは 1,000 文字を超えることができないため、NT では長さの問題があるものを保持するために DBM を使用することはできません。
5. DBM での中国語キーの使用について: 筆者はキーとして中国語を使用した場合、キーが多すぎる (約 20) 場合、中国語では使用できません。検索を横断できないという問題が発生します。
4. DBM を使用して順序なしデータベースを作成する:
DBM を使用して順序なしデータベース (つまり、順序のないデータの概念) を作成するのは非常に簡単で、テキスト データベースよりもはるかに簡単です。たとえば、次のプログラムは、ユーザーが自分のユーザー名を入力してから電話番号を入力できるようにします:
-------------------------------------- ----- -------------------
if(isset($userid)){
$data=dbmopen("パス"," r");
if(dbmexists($data,$userid))echo $no=dbmfetch($data,$userid);
else echo "ユーザー ID エラー!";
dbmclose($data);
}else{
?> ユーザー名を入力してください: