検索

アド

序文



あなたはエーテル、私はエーテル、
あなたはエーテル、私はエーテル、エーテル、エーテル、ニーテル、ニーテル -
すべてを中止しましょう

あなたはジャガイモが好きで、私はポタが好きです! -と、
あなたはトマトが好きで、私はトーマトが好きです
ポテト、ポタト、トマト、トマト -
すべてをやめましょう

私はこの曲を聴くのが大好きです。特にルイ・アームストロングとエラのデュエット・バージョン。この作品は、恋する二人が互いに競争することがいかに難しいかを示しており、妥協と共通点を見つける旅についても描かれています。

PHP は、最小限の労力で最も楽しく動的な Web サイトを構築できます。動的な Web サイトを構築するには、データベースを使用してログイン アカウント情報を取得し、動的なニュースを公開し、ディスカッション フォーラムに記事を保存する必要があります。あなたの会社は、利用可能な最も汎用性の高い MySQL データを使用して、あなたの Web サイトを想像以上に有名にする素晴らしい仕事をしました。その後、MySQL が実際のワークロードに対処できなくなったこともわかり、データベース システムを置き換える時期が来ました。

残念ながら、PHP でのすべてのデータベース アクセスは若干異なります。 MySQL に接続するには、mysql_connect() を使用します。Oracle または Microsoft SQL Server にアップグレードする場合は、それぞれ ocilogon() または mssql_connect() を使用する必要があります。さらに悪いことに、リンクごとに使用されるパラメータも異なるということです。

諦めないでください
プログラムの移植性を確保する必要がある場合、ADODB と呼ばれるデータベース パッケージ リンク ライブラリが登場しました。サポートされているすべてのデータベースと通信するための共通 A​​PI が提供されるため、諦める必要はありません。

ADODB は、Active Data Object Database の略称です (申し訳ありません! コンピューターをプレイする人は、あまり独創的ではない場合があります)。 ADODB は現在、MySQL、PostgreSQL、Oracle、Interbase、Microsoft SQL Server、Access、FoxPro、Sybase、ODBC、および ADO をサポートしています。ADODB は http://php.weblogs.com/adodb からダウンロードできます。

MySQL の例
PHP で最も一般的なデータベースは MySQL なので、次のプログラム コードが気に入ると思います。データベース名は mydab で MySQL サーバーに接続し、SQL select コマンド クエリを実行して、クエリ結果が 1 つずつ出力されます。

$db = mysql_connect("localhost", "root", "password");
mysql_select_db("mydb",$db);
$result = mysql_query("SELECT * FROM 従業員",$db);
if ($result === false) die("failed");
while ($fields = mysql_fetch_row($result)) {
for ($i=0, $max=sizeof($fields); $i print $fields[$i].' ;
}
print "
n";
}
上記のプログラム コードは色分けされたセクションに分かれており、最初のセクションは2 番目の段落は SQL コマンドを実行し、最後の段落は結果の各列をスキャンし、for ループは各列のフィールドを表示します。

次のステップは、ADODB プログラム コードを使用して同じ結果を取得することです:

include("adodb.inc.php");
$db = NewADOConnection('mysql');
$db->Connect( "localhost" , "root", "password", "mydb");
$result = $db->Execute("SELECT * FROM 従業員");
if ($result === false) die("失敗しました");
while (!$result->EOF) {
for ($i=0, $max=$result->FieldCount(); $i print $result- >fields [$i].' ';
$result->MoveNext();
print "
n";
}
次に、Oracle データベースを指すように変更します。 NewADOConnection('oracle ') になるプログラム コードです。完全なプログラム コードを見てみましょう...

データベースと接続します

include("adodb.inc.php");
$db = NewADOConnection(' mysql');
$db->Connect ("localhost", "root", "password", "mydb");
リンクされたプログラム コードは、元の MySQL プログラム コードよりも洗練されています。洗練された。 ADODB では、オブジェクト指向のアプローチを使用して複数のデータベースの複雑さを管理し、さまざまなクラスを使用してさまざまなデータベースを制御します。オブジェクト指向プログラミングが初めてでも、心配する必要はありません。複雑なことはすべて NewADOConnection() 関数の背後に隠されています。

メモリを節約するために、接続しているデータベースに関連する PHP プログラム コードのみをロードします。これは、NewADOConnection(databasedriver) を呼び出して行います。これには、mysql、mssql、oracle、oci8、postgres、sybase が含まれます。 vfp、access、ibase、その他多くのドライバー。

次に、NewADOConnection() を呼び出して接続クラスから新しいオブジェクト エンティティを生成し、最後に $db->Connect() を使用してデータベースに接続します。

SQL命令を実行する

$result = $db->Execute("SELECT * FROM従業員");
if ($result === false) die("failed");
SQL コマンドをサーバーに直接送信します。正常に実行されると、Execute() は上記の $result オブジェクトを返します。

初心者にとって混乱しやすい問題は、ADODB には接続オブジェクトとレコードセット オブジェクトという 2 種類のオブジェクトがあり、これらのオブジェクトをいつ使用するかということです。

接続オブジェクト ($db) は、データベースへの接続と SQL クエリのフォーマットを担当します。レコードセット オブジェクト ($result) は、結果を取得し、応答データをテキストまたは配列に正規化する役割を果たします。

唯一付け加えておきたいのは、ADODB には INSERT 命令と UPDATE 命令を簡単にする多くの便利な関数が用意されていることです。これについては上級章で説明します。

データを取得

while (!$result->EOF) {
for ($i=0, $max=$result->FieldCount(); $i print $ result->fields[$i].' ';
$result->MoveNext();
print "
n";
}
データを取得する前述の例は、ファイルの各行について、最初にファイルの終わり (EOF) に達しているかどうかを確認し、まだ終わりに達していない場合は、各列のフィールドをループしてから次の行に移動します (MoveNext)。同じことを繰り返します。

$result->fields[] 配列は PHP データベース拡張システムによって生成されます。一部のデータベース拡張システムでは、配列に名前でインデックスを付けるように強制するには、$ADODB_FETCH_MODE ユニバーサル変数を使用します。

$ADODB_FETCH_MODE = ADODB_FETCH_NUM;
$rs1 = $db->Execute('select * from table');
$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;
$rs2 = $db->Execute('select * from table') ;
print_r($rs1->fields); // array([0]=>'v0',[1] =>'v1') を表示します
print_r($rs2->fields); shows array(['col1']=>'v0',['col2'] =>'v1')
上記の例でわかるように、2 つのレコードセットが保存され、レコードセットが保存されるときに異なるアクセス モードが使用されます。 Execute() によって生成された後、$ADODB_FETCH_MODE を設定します。

ADOConnection

はデータベースに接続されたオブジェクトであり、SQL コマンドを実行し、相関コマンドや日付フォーマット コマンドなどの SQL コマンドを標準フォーマットするためのツール関数のセットを備えています。

その他の便利な関数

$recordset->Move($pos) は、データベース全体の前方スクロールをサポートします。これは問題ではありません。一時レコードをキャッシュに使用することで、後方スクロールをシミュレートできるためです。

$recordset->RecordCount() は、SQL コマンドによってアクセスされたレコードの数を返します。一部のデータベースは、それをサポートしていないため、-1 を返します。

$recordset->GetArray() は結果を配列の形式で返します。

rs2html($recordset) 関数は、渡されたレコードセットを HTML テーブル形式に変換します。関連する使用法は、次の例で太字で示されています。

include('adodb.inc.php');
include('tohtml.inc.php'); /* rs2html 関数が含まれます */
$conn = &ADONewConnection ( 'mysql');
$conn->PConnect('localhost','userid','password','database');
$rs = $conn->Execute('select * from table');
rs2html($rs); /* HTML テーブルへのレコードセット */
ファイルには他にも多くの便利な関数がリストされており、次の URL で見つけることができます: http://php.weblogs.com/adodb_manual

Advancedテーマ

新規および更新

次のデータをデータベースに追加するとします。

ID = 3
TheDate=mktime(0,0,0,8,31,2001) /* 2001 年 8 月 31 日 */
Note= Sugar それを中止しましょう

別のデータベースに切り替えるとき、新しいデータを追加できない場合があります。

最初の問題は、各データベースが異なるデフォルトの日付形式を使用するのに対し、MySQL は YYYY-MM-DD 形式を使用するのに対し、ADODB は異なるデータベース間で変換するための DBDate() 関数を提供することです。フォーマット。

次の問題は、一重引用符の表現です (使用しないでください)。MySQL では一重引用符を直接使用できますが、Sybase、Access、Microsoft SQL Server などの他のデータベースでは 2 つの一重引用符を使用します。が使用されている場合は (使用しないでください)、qstr() 関数がこの問題を解決できます。

これらの機能はどのように使用しますか?このように:

$sql = "INSERT INTO table (id, thedate,note) 値 ("
. $ID . ','
. $db->DBDate($TheDate) .','
. $ db->qstr($Note).")";
$db->Execute($sql);
ADODB には $connection->Affected_Rows() 関数もあります。これは、最後のデータによって影響を受けたデータを返します。 update または delete コマンド データ列の数、および $recordset->Insert_ID() 関数は、insert コマンドによって自動的に生成された最後のデータ列番号を返します。これら 2 つの関数を提供するデータベースは存在しないことに注意してください。

MetaTypes

レコードセット メソッド FetchField($fieldoffset) を通じてオブジェクトの 3 つの属性 (name、type、max_length) を返すことで、フィールドに関する詳細情報を取得できます。

例:

$recordset = $conn->Execute("select adate from table");
$f0 = $recordset->FetchField(0);
その結果、$f0->name の内容は 'adata'、$f0->type は 'date' になり、max_length が不明な場合はその内容は -1 になります。

異なるデータベースを扱うときの問題の 1 つは、各データベースが同じデータ型に対して異なる名前を持っていることです。たとえば、タイムスタンプ タイプは、あるデータベースでは datetime と呼ばれ、別のデータベースでは time と呼ばれるため、ADODB は MetaType ($type,$) を提供します。 max_length) 関数を使用して、次のデータ型を正規化します:

C: 文字型および varchar 型
X: テキストまたは長い文字 (例: 幅 255 バイトを超える)。
B: BLOB またはバイナリ イメージ
D : 日付
T: タイムスタンプ
L: 論理 (ブール値)
I: 整数
N: 数値 (float、double、money)

前の例では、

$recordset = $conn->Execute("select adate from table");
$f0 = $recordset->FetchField(0);
$type = $recordset->MetaType($f0->type, $f0->max_length);
print $type ; /* 'D を出力する必要があります。 ' */
Select コマンドの Limit と Top のサポート

ADODB には、レコードセットの部分的なコレクションを取得できる $connection->SelectLimit($sql,$nrows,$offset) 関数があり、この利点を採用しています。 Microsoft 製品での SELECT TOP の使用法と、PostgreSQL および MySQL での SELECT...LIMIT の使用法を比較します。元のデータベースがこの使用法を提供していない場合でも、この関数はこの使用法をシミュレートして提供します。

キャッシュのサポート

ADODB を使用すると、ファイル システムにレコードセット データを一時的に保存し、$connection->CacheExecute($secs2cache,$sql) および $connection->CacheSelectLimit($secs2cache,$) で次の関数を実行できます。 sql)、$nrows、$offset) を実行し、時間を節約するために実際にデータベースにクエリを実行する前に、設定された時間間隔に達するまで待機します。

PHP4 セッションのサポート

ADODB は PHP4 セッション ハンドラーもサポートしています。関連する機能については、http://php.weblogs.com/adodb-sessions を参照してください。

商用利用をお勧めします。
販売用の商用 PHP アプリケーション ソフトウェアを作成する予定がある場合は、ADODB を GPL に基づいて公開することもできます。つまり、商用アプリケーション ソフトウェアで合法的に引用し、プログラム コードの所有権を保持することができます。 ADODB の商用利用は強く推奨されており、この理由から社内で ADODB を使用しています。

結論

この記事を読んでくれてありがとう、ここにすべてを終わらせるための完全な歌詞があります。

やめてください

あなたはエーテル、私はエーテル、
あなたはエーテル、私はエーテル、エーテル、エーテル、ニーテル、ニーテル -
すべてをやめましょう

あなたはジャガイモが好きで、私はポタが好きです! -と、
あなたはトマトが好きで、私はトーマトが好きです
ポテト、ポタト、トマト、トマト -
すべてを中止しましょう

でも、もし私たちが電話をかけたら!すべてを終わらせたら、私たちは別れなければなりません
そして、もし私たちが別れることになったら、それは私の心を壊すかもしれません

それで、あなたがパジャマが好きで、私がパジャマが好きなら、私はパジャマを着てプレゼントします。起きてください、パジャマス
私たちはお互いを必要としていることを知っていますので、
すべてを中止したほうがいいです

2番目のリフレイン

あなたは笑いと言い、私は法律を言います
あなたは後だと言い、私は後だと言う
笑って、後、後、
すべてを中止しましょう

あなたはバニラが好き、私はバニラが好き
バニラ、チョコレート、ストロベリー -
すべてを中止しましょう

でも、ああ、もしすべてを中止したら、私たちは別れなければなりません
そして、ああ、もし私たちが別れるなら、それは私の心を壊すかもしれません。

それで、あなたが牡蠣を食べに行き、私がエルスターを食べるなら、私は牡蠣を注文して、エルスターをキャンセルします
私たちはお互いを必要としているので、
中止にしたほうがいいでしょう。すべてを中止してください

映画「Shall We Dance?」でフレッド・アステアとジンジャー・ロジャースによって紹介されたジョージとアイラ・ガーシュウィンの歌と歌詞

オリジナルの英語版: http://php.weblogs.com/adodb_tutorial









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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール