ホームページ >php教程 >php手册 >PHP で DBM をデータベースとして使用する

PHP で DBM をデータベースとして使用する

WBOY
WBOYオリジナル
2016-06-21 09:08:011019ブラウズ

データ|データベース

多くの 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{
?> ユーザー名を入力してください:

name="送信">

---------------------------- --- -------------------

5. DBM を使用して順序付けされたデータベースを作成します:
DBM はデータをソートしないため、特定の順序で出力する一部のプログラム (先ほどのプログラムのように、すべてのユーザーの電話番号を表示する) では、手動でソートする必要があるため、作成者は以下の 2 つの方法を示しています。
1. データの並べ替えメソッド: このメソッドでは、順序を記録するためにキーに対応する値を特に使用します。そのキーは、sort の対応する値は次のとおりです:
data1 の key|data2 の key|data3 のキー。 |... ..|データ n のキー
データ n の長さは確実である必要があります (著者は時間メソッドを使用しており、次のプログラムでキーを生成できます:)
----------- ------- ----------------------------------
関数 getkey(){
$date =date("ymdHis");
$date を返す
} ---------------------------------- ----------- ----------
このようにして、getkey() を使用して 001203114950 のような 12 ビット キーを取得でき、各キーは独自のキーに対応しますvalue (ここではユーザーの電話番号); substr($sort ,$i*13,12) を使用すると、i 番目のユーザーのキーを読み取ることができます。リストを表示するコードは次のとおりです。 -------------------- -----------------------------
// まず、特別な num Record を開くことができます。
$data=dbmopen("path","r"); // データベースを開きます。 =dbmfetch($data,"sort"); //ソートを読み取ります
for($i=0;$i< $totaluser;$i++){
$key=substr($sort,$i*13,12); // キーを順番に取得します
$telno=dbmfetch($data,$key); // 対応するキーの値を読み取ります
echo $i+1." ユーザーの TelNO は ".$telno."
";
}
dbmclose($data);
---------------- -------------------- --------------------

2. 配列の並べ替え方法: こちら ウーシャン兄弟のおかげで、並べ替えに配列を使用することを思い出しました。配列ソートの基本原理は、DBM データベース全体の各キーを配列に読み取り、usort() などの関数を使用して各キーのサイズに従ってソートして出力することです。
キーサイズはソートされているので、最初に追加したキーよりも後から追加したキーが大きい限り、後から参加した人が先に表示されます。キーとして使用されます。
以下はリストコードです:
----------------------------------------------------- -------- --------
$data=dbmopen("path","r"); // データベースを開きます
$i=1; ($data);$key;$ key=dbmnextkey($data,$key)){
$sort[$i]=$key
} //すべてのキーを取得するためのトラバース
usort($sort) ); //安全なサイズソート
for ($i=0;$iecho $i+1." ユーザーの TelNO は ".dbmfetch($data,$sort[$i ])."


;"





声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。