検索
ホームページphp教程php手册PHPのADODBクラスの詳しい説明

PHPのADODBクラスの詳しい説明

Jun 13, 2016 pm 12:30 PM
phpwebしかし関数アクセス道具データベースはい親切システム詳しい説明

PHP は Web システムを構築するための強力なツールですが、データベースにアクセスする PHP の機能は標準化されておらず、各データベースは異なる互換性のないアプリケーション プログラミング インターフェイス (API) を使用しています。この欠点を埋めるためにADODBが登場しました。データベースにアクセスするためのインターフェースが標準化されると、さまざまなデータベース間の違いが隠蔽され、他の異なるデータベースへの切り替えが非常に簡単になります。

現在、ADODB は、MySQL、PostgreSQL、Interbase、Informix、Oracle、MS SQL 7、Foxpro、Access、ADO、Sybase、DB2 および一般的な ODBC (PostgreSQL、Informix、Sybase のドライバーはフリー ソフトウェア コミュニティの開発によって提供されています)。

ADODB を使用する最大の利点の 1 つは、バックエンド データベースに関係なく、データベースにアクセスする方法が同じであることです。開発者と設計者は、特定のデータベースの別のセットを学習する必要がありません。データベースへのアクセス方法により、開発者の知識の負担が大幅に軽減され、データベース プラットフォームを移行しても、プログラム コードを大幅に変更する必要がありません。

実際、ADODB の開発コンセプトは ADODB よりも先に登場したものではありません。DBI は、データベースにアクセスする際の一貫した API 呼び出しインターフェイスを Perl に提供します。 Perl DBI を使用したことのある友人は、再び ADODB を使用するときに親しみを感じると思います。

また、ASP を使用したことがある人には ADODB が馴染みがあるはずで、そのような友達は ADODB を非常に受け入れやすいはずです。

ADODB の簡単な使用法を見てみましょう:


// adodb の inc ファイルを導入することによってのみ、ADODB が提供する関数を呼び出すことができます。 adodb

include('adodb/adodb.inc.php');

// オンライン オブジェクトを作成するために接続するデータベースのタイプを選択します

//オブジェクトが作成されると、そのメンバー関数がデータベースを処理して使用できるようになります。

// 次の $conn はこのオブジェクト (オブジェクト)

$conn = &ADONewConnection('mysql');

// デバッグ メッセージを表示するかどうか、falseいや、本当だよ。

// $conn->debug = false;



$conn->debug = true;

// データベースに接続します。 🎜 >
// 使用法: $conn->Connect('Host', 'User', 'Password', 'Database');

// 使用例:

$ conn->Connect('localhost', 'piza', 'ooo123', 'test');

// 永続的な接続を使用する場合は、上記の式を PConnect に置き換えることができます。

// $conn->PConnect('localhost', 'piza', 'ooo123', 'test');

// SQL コマンドを設定します

$ sql = "t 値に挿入 ('abcde', 18)";

// SQL コマンドを実行

$rs = $conn->Execute($sql); 🎜>
/ / 実行結果を確認します。$rs == false の場合、$conn オブジェクトのメンバー関数 ErrorMsg() を呼び出します。

if (!$rs) print $conn->ErrorMsg (); else print "OK !";



結果は次のとおりです。 --------- ----------------------------

(mysql): t に挿入値("abcde",18)

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

OK!



デバッグがオフになっている場合、つまり $conn->debug=false結果は次のようになります:

OK!



以下では、ADODB を使用する主要な方法を段階的に紹介します。

2. インストール
ADODB のホームページは、http://php.weblogs.com/ADOdb からダウンロードできます。 ADODB からダウンロードするか、台南県教育ネットワーク センターの FTP ダウンロードにアクセスしてください。

ADODB のインストール方法は非常に簡単です。以下に示すように、ダウンロードして解凍し、適切な場所に配置するだけで完了です。

1. ダウンロード:

$ ncftp ftp.tnc.edu.tw

cd sysop/ADODB

get adodb242.tgz

2. 解凍:

put adodb242.tgz 以下に示すように /var/www/html

$ cp adodb242.tgz /var/www/html

$ tar xvzf adodb242.tgz

と入力します。

adodb/adodb-cryptsession.php

adodb/adodb-csvlib.inc.php

adodb/adodb-errorhandler.inc.php

adodb /adodb-errorpear.inc.php

adodb/adodb-lib.inc.php

adodb/adodb-pager.inc.php

....以下



これで、ADODB が /var/www/html/adodb にインストールされました。

3. ADODB の導入
ADODB をインストールしたら、使用前に ADODB 関連のインクルード ファイルをプログラムに導入する必要があります。 adodb ディレクトリが正しいパス ファイル名を指している限り、どこに置かれても問題ありません。一般に、プログラム コードには adodb.inc.php を含める必要があるだけです。

メソッドは次のとおりです。

PHP プログラム内:

include('path/adodb/adodb.inc.php');

または

include_once('path/adodb/adodb.inc.php');



例:

プログラムが同じディレクトリにある場合as adodb 次へ:

..

adodb/

something.php*



:

include('adodb/adodb.inc.php');

場所が somedir ディレクトリにある場合:

.

adodb

somedir/something.php



は次を使用する必要があります:

include('../adodb/adodb.inc.php');



を除くファイル adodb.inc.php のほか、ADODB には多数のインクルード ファイル adodb-*.inc.php も用意されており、そのほとんどは特定のデータベースの特別な使用法を促進するように設計されています。

adodb-session.php を導入すると、セッションをデータベースに保存してアプリケーションを保守できます。

adodb-pager.inc.phpを導入するとページネーションの表示が便利になります。

adodb-errorhandler.inc.php を導入すると、エラー処理メッセージをカスタマイズできます。

adodb-pear.inc.php をインクルードすると、PHP4 の PEAR DB 構文を使用して ADODB を使用できます。この時点でも、DSN を使用してデータベース文字列設定に接続できます。たとえば、$dsn="mysql://piza:ooo123@localhost/test";

tohtml.inc.php を導入すると、取得したレコードをプログラム コード内で HTML に変換できます。テーブルの中。

toexport.inc.phpを導入すると、CSVファイルやタブ区切りのデータファイルを簡単にエクスポートできます。

rsfilter.inc.phpを導入すると、レコードを利用する前に事前フィルタリングが可能になります。

pivottable.inc.phpを導入するとピボットテーブル機能(通称クロス集計)が利用できるようになります。

注意! 他の関数については、使用する関数に応じて、含まれているファイルをインポートする必要があります。

4. データベースの種類を選択し、接続オブジェクトを作成します。
ADODB はオブジェクト指向のアプローチを使用しているため、ファイルをインポートした後、バックエンドの種類に応じて接続オブジェクトを作成できます。データベース。メソッドは次のとおりです。

MySQL データベースを例に挙げます。

$conn = &ADONewConnection('mysql');

注: NewADOConnection と ADONewConnection は同じです。 、どちらも使用できます。



上記の例の「mysql」はデータベース ドライバーのタイプを指し、ADODB はそれに応じて対応するデータベース ドライバーを呼び出します。

その他の一般的に使用されるドライバーは次のとおりです: access、ado、ado_access、ado_mssql、db2、vfp、ibase、borland_ibase、informix、imformix72、mssql、oci8、odbc、postgres、postgres64、postgres7、sqlanywhere、sybase... 。等。

作成されたオブジェクト $conn を ADOConnection オブジェクトと呼びます。これはデータベースとの接続トランザクションを表し、このオブジェクトを通じて処理されます。 ADOConnection オブジェクトは、オブジェクト指向の用語では、これらのメソッドをメンバー関数と呼びます。これは、外部からこのオブジェクトにアクセスするためのインターフェイスです。

オンライン オブジェクトを作成すると、多くのオブジェクト関数を自由に使用できるようになります。次のセクションの概要を参照してください。

5. デバッグ モード
プログラム開発プロセス中、考えられる問題の検出を容易にするために、通常はデバッグ モードをオンにし、プログラムの機能が実際に安定した後にオフにします。 ADODB には、データベースへのアクセス時にデータベースがどのように動作するかを表示するデバッグ モードが用意されています。

デバッグ モードをオンにする、使用法:

$conn->debug=true



デバッグ モードをオフにする、使用法:

$conn->debug=false

6. データベースに接続します
次に、$conn 接続オブジェクトの Connect または PConnect 関数を使用して、特定のデータベースに接続します。 DSN (データ ソース名) 関連データ。DSN には、ホスト名、データベース ユーザー、データベース パスワード、データベース名が含まれる場合があります。データベースの種類が異なると、DSN はこれらの項目の一部を省略できる場合があります。 MySQL の場合、上記の 4 つがすべて提供されます。

この関数は、接続が成功したかどうかを示す true または false を返します。

使用例:

// 形式: $conn->Connect('Host', 'User', 'Password', 'Database'); conn->Connect('localhost', 'piza', 'ooo123', 'test');

または、永続的な接続を使用します:

// 形式: $conn-> ; PConnect('ホスト', 'ユーザー', 'パスワード', 'データベース');

$conn->PConnect('localhost', 'piza', 'ooo123', 'test') ; 🎜>
接続が成功したかどうかを確認したい場合は、変数を使用して戻り値を受け取ることができます:

$mch="localhost";

$user=ピザ" ;

$pwd="ooo123";

$database="test";

$cok = $conn->Connect($mch, $user) , $ pwd, $database);

または、永続的な接続を使用します:

$cok = $conn->PConnect($mch, $user, $pwd, $database); 🎜 >
if (!$cok) { echo "データベース $database に接続できません"; exit; }

7. SQL コマンド構文を設定し、SQL コマンドを実行します。
実行する SQL コマンド構文を設計して実行できます。

$sql = "ここでの SQL コマンド構文";

$rs = $conn->Execute($sql);



, $rs が返された結果です。$rs == false の場合は、実行が失敗したことを意味します。慎重に確認する必要があります。

コマンド構文を $sql 変数に入れる必要はありません。Execute() 括弧内に直接入れることもできます。コマンドが短い場合は問題ありません。コマンドが長い場合は、変数 $sql を使用してコマンド文字列を設定することをお勧めします。

次のセクションから説明します。 SQL の基本的なコマンド ( Insert 、 Select、 Update、 Delete など) の使用法。

8. レコードの挿入 (Insert)
Insert の使用法は次のとおりです:

// $name は文字列、$year は数値

$ name='abcde ';

$year=18;

// レコードを挿入します。コマンドの大文字と小文字は関係ありませんが、データ テーブル t と変数の大文字と小文字は異なります。 !

$sql = "INSERT INTO t VALUES ('$name', $year)";

// $sql = "INSERT INTO t Values ('$name', $year)"; こちらも利用可能です。

// 実行

$rs = $conn->Execute($sql);

// 実行結果を確認し、正常であれば続行します。アクション....

if (!$rs) print $conn->ErrorMsg();

....以下省略....



ErrorMsg()はエラーメッセージを取り出して表示する関数です。

さらに、ADODB は、挿入構文の生成に役立つ RecordSet 関数 GetInsertSQL() を提供します。

例は次のとおりです。


//ADODB の紹介

include('adodb/adodb.inc.php') ;

// 接続オブジェクトを作成します

$conn = &ADONewConnection('mysql');

// デバッグ

$conn->debug= true;

// DSN の 4 つの基本データ設定

$user="root"; "jack168";

$database="test";

// データベースに接続テスト

$conn->PConnect($mch, $user, $ pwd , $database);

// 空のレコードを生成します

$sql = "select * from t where year=-1"; ->Execute($sql);



// 更新するデータを保持するために空の配列を使用します

$r = array()

$r['name']='john';

$r['year']=28;

// GetInsertSQL 関数を使用して完全な SQL コマンドを作成します。 SQL コマンドは $insertSQL に配置されます

$insertSQL = $conn->GetInsertSQL($rs, $r);

// 挿入を実行します

$conn- > ;Execute($insertSQL);

$conn->Close();



デバッグ メッセージは次のとおりです。

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

(mysql): select * from t where year=-1

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

(mysql): INSERT INTO t ( name, year ) VALUES ( 'john', 28 )

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

9. レコードを取り出します (Select)
Select は次のように使用されます:


//ADODB の紹介

include('adodb/ adodb.inc.php');

// 接続オブジェクトを作成します

$conn = &ADONewConnection('mysql');

// デバッグなし

$conn->debug= false;

// DSN の 4 つの基本データ設定

$mch="localhost";

$ pwd="ooo123";

$database="test";

// データベーステストに接続します

$conn->PConnect ($mch, $user, $pwd, $database);

// Select を実行してテーブル t からデータを取得します。

// ADORecordSet レコード セット オブジェクト $rs ( RecordSet)

// 実際、$rs は現在のレコード (行またはレコード) を所有するカーソル インジケーターです。

// レコードのすべてのフィールド データの内容は、フィールド配列

//、0 から始まる数字でインデックス付けされます

$rs = &$conn->Execute('select * from t'); / / $rs が false の場合、エラー メッセージを表示します。

if (!$rs) {

print $conn->ErrorMsg(); else {

//レコードセット$rsの終了位置(EOF:End Of File)に達していない場合(つまり、取り出していないレコードがまだある場合)

while (!$rs-> ;EOF) {

// すべてのフィールドを表示します。$FieldCount() は、フィールド

の合計数を返します ($i=0, $max=) $rs->FieldCount() ; $i

print $rs->
}

// 次のレコードに移動

$rs->MoveNext();



// 列を変更

echo "< ;br>n";

}

}

$rs->Close(); // 不要

$conn->; Close(); // 使用できません



$rs->fields[] 配列は PHP のデータベース拡張機能によって生成されます。一部の拡張関数はインデックスとして使用されません。

名前をインデックス (ハッシュ配列または連想配列とも呼ばれます) として使用する場合は、グローバル変数 $ADODB_FETCH_MODE を使用してそれを指定する必要があります。

次の設定: 数値インデックスを使用 $ADODB_FETCH_MODE= ADODB_FETCH_NUM;



次の設定: 名前インデックスを使用 $ADODB_FETCH_MODE= ADODB_FETCH_ASSOC;名前インデックスの使用例:


//ADODB の紹介

include('adodb/adodb.inc.php')

// 接続オブジェクトを作成します

$conn = &ADONewConnection('mysql');

// デバッグなし

$conn->
// DSN の 4 つの基本データ設定

$user="root";

$pwd="jack168"; 🎜>
$database="test";

// データベースに接続テスト

$conn->PConnect($mch, $user, $pwd, $database) ;

// SQL を実行する前に、使用する名前インデックスを指定します。

$ADODB_FETCH_MODE = ADODB_FETCH_ASSOC;

// Select を実行すると、ADORecordSet レコード セット オブジェクトが返されます。 $rs

// 実際には、$rs は現在のレコードの内容を保持するカーソルインジケータです。

// レコードはフィールド配列に格納されます

$rs = &$conn->Execute('select * from t');

// $rs が false の場合、エラー メッセージを表示します

if (!$rs) {

print $conn->ErrorMsg();

} else {

// レコードセットの終わり (EOF) に達していない場合、

while (!$rs->EOF) {

// すべてのフィールドを表示します

print $rs->fields['name'] 。フィールド['年'];

// 次のレコードに移動

$rs->MoveNext();



// 変更columns

echo "
n";

}

$rs->Close ();

$conn->Close(); // 使用可能

?>10. レコードの取得 (FetchRow を使用)
FetchRow の使用法:

$sql = "select * from t";

$rs = $conn->Execute($sql); if ( $rs) {

while( $ar = $rs->FetchRow() ) {

print $ar['name'] ." " $ar['year '] ;

print "
n";

}



FetchRow() はレコードを取り出しますが返される場合は、配列を使用してそれらを受け取ることができます。

注意! FetchRow() を使用する場合は、MoveNext() を使用する必要はありません。FetchRow は次のレコードに移動するアクションを内部で自動的に完了します。

11. レコードの更新 (Update)
従来の方法を使用できます:

$sql ="UPDATE t SET name='john', year=28 WHERE year=18" ;

$conn->Execute($sql);



次のメソッドも使用できます:


//ADODB を導入します

include('adodb/adodb.inc.php');

// 接続オブジェクトを作成します

$conn = &ADONewConnection( ' mysql');

// デバッグ

$conn->debug=true;

// DSN の 4 つの基本データ設定

$mch ="ローカルホスト";

$user="ピザ";

$database="テスト"; // データベースに接続します test

$conn->PConnect($mch, $user, $pwd, $database);

// 更新するレコードを選択します

$sql = "select * from t where year=18";

$rs = $conn->Execute($sql);



/ /更新するデータを保持するには空の配列を使用します

$r = array();

$r['name']='john';

$ r['year']=28;

// GetUpdateSQL 関数を使用して完全な SQL コマンドを作成します。この SQL コマンドは $updateSQL

$updateSQL = $conn -> に配置されます。 GetUpdateSQL($rs, $r);

//更新を実行

$conn->Execute($updateSQL); ;

?>



デバッグ メッセージは次のとおりです:

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

(mysql): select * from t where year=18

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

(mysql): UPDATE t SET name = 'john' 、 year = 28 WHERE year=18

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

12. レコードの削除(削除)
削除レコードは、従来の方法を使用して非常に簡単です。 $sql = "DELETE FROM t WHERE year=18";

$rs = $conn->Execute($sql); >13. フィールド オブジェクトの使用
ここでは、フィールド オブジェクト FetchField を使用してフィールド名とフィールド タイプを取得する方法を示します。

$sql = "select * from t"; 🎜>$rs = &$conn- >Execute($sql);

if ($rs) {

while (!$rs->EOF) {

// 2 番目のフィールドを取り出します

$f = $rs->FetchField(1);

// フィールド名とフィールドの型を出力します

print $ f->name. :" . $f->type;

$rs->MoveNext();

print "
n";

}

}



さらに、ADODB は、元のフィールド型を一般的な型コードに変換できる RecordSet 関数 MetaType() を提供します。
C: 文字

X : テキスト

B : blob

D : 日付

T : タイムスタンプ

L :ブール値またはビット

I: 整数

N: 自動インクリメント、数値、浮動小数点数、実数、整数を含む数値タイプ

R: シリアル、 auto-increment



使用例:

$f = $rs->FetchField(1);

//フィールド名を出力し、フィールド タイプ コード

print $f->name . ":" . $rs->MetaType($f->type);

14. 🎜>ADODB は、ページングでレコードを表示するには、使用前に adodb-pager.inc.php を導入する必要があります。


include('adodb/adodb.inc.php');

// ページング関数の導入

include('adodb /adodb-pager.inc.php');

// セッションを開始します

$db = ADONewConnection('mysql');
$mch="ローカルホスト";

$user="ピザ";

$database="テスト"; 🎜>
$db->Connect($mch, $user, $pwd, $database);

$sql = "select * from t"; pager オブジェクト

$pager = new ADODB_Pager($db, $sql);

// 各ページには 5 つのレコードが表示されます

$pager->Render($ rows_per_page=) 5);

?>



結果は次のとおりです:



図 1. 単純なページング関数



各ページに表示されるレコード数は Render() によって制御されます。指定された行数が Render() に渡されない場合、デフォルト値は 1 ページあたり 10 レコードです。

さらに、以下に示すように、フィールド名も変更できます。


include('adodb/adodb.inc.php');

// ページング関数を導入します

include('adodb/adodb-pager.inc.php');

// セッションを開始します

session_start( );

$db = ADONewConnection('mysql');

$user="ピザ"; $pwd=" ooo123";

$database="test"

$db->Connect($mch, $user, $pwd, $database); 🎜>$sql = "select name as 'name', year as 'age' from t";

// ページャー オブジェクトを生成

$pager = new ADODB_Pager($db, $sql) );

// ページごとに 5 つのレコードを表示

$pager->Render($rows_per_page=5);



結果は次のとおりです。



図 2. フィールド名の変更



15. CSV ファイルの出力
ADODB CSV ファイルの出力を提供します。 メソッドを使用する前に、toexport.inc.php を導入する必要があります。


include('adodb/adodb.inc.php');

//出力 CSV ファイル関数の紹介

include ( 'adodb/toexport.inc.php');

$db = ADONewConnection('mysql');

$mch="localhost"; " ピザ";

$pwd="ooo123";

$db->Connect($mch, $user, $ pwd , $database);

$sql = "「名前」として名前、「年齢」として年を選択します";

$rs = $db->Execute($sql) ) ;

// CSV 形式を表示します

print rs2csv($rs);



結果は次のようになります。

名前、年齢

abcde,45

yyy,20

ppp,34

mmm,13

haha,41

rrr,65

kkk,29

miso,154

sss,89

abc ,18

abcde,0

uyt,58

john,28



タブを使用してフィールドを区切ることもできます。 rs2tab の使用方法は次のとおりです。

print rs2tab($rs, false);

注: false はフィールド名を表示しないことを意味します

結果は次のようになります。

abcde 45

yyy 20

ppp 34

mmm 13

hh 41

rrr 65

kkk 29

miso 154

sss 89

abc 18

abcde 0

uyt 58

john 28

if print rs2tab ($rs, true);

結果は次のとおりです:

名前 年齢

abcde 45

yyy 20

ppp 34

mmm 13

hh 41

rrr 65

kkk 29

miso 154

sss 89

abc 18

abcde 0 表示、次のように rs2tabout メソッドを使用します:

print rs2tabout($rs) ;



実行結果は次のとおりです:



図 1 . コンソールに結果を表示します



または CSV ファイルとして保存します:

// ファイルパス

$path = "/tmp/test.csv";

// ファイルを開きます書き込み用

$fhd = fopen($path, "w");

// ファイルが正常に開かれた場合

if ($fhd) {

// 次に CSV に書き込みます

rs2csvfile($rs, $fhd);

// rs2tabfile($ rs, $fhd) を使用することもできます。 >//ファイルを閉じる

fclose($fhd);

}

結果は次のようになります:

[ols3@p web]$ cat /tmp/test.csv

名前、年齢

abcde,45

yyy,20

ppp,34

mmm, 13

hh,41

rrr,65

kkk,29

みそ,154

sss,89

abc,18

abcde,0

uyt,58

john,28

16. 特定の数のレコードを取り出します (SelectLimit を使用)。
ADODB は、特定の数のレコードを取得できる ADOConnect 関数 SelectLimit を提供します。使用方法は次のとおりです。

$conn->Connect($mch, $user , $pwd, $ Database);

rs = $conn->SelectLimit("Select * from t", 3, 1);

// ペン
// これら 3 つのレコードを表示します

if ($rs) {

while( $ar = $rs->FetchRow()) {

print $ar['name'] ." " . $ar['year'];

print "
n";

}

上記の式は、最初のレコードの後に​​、2番目、3番目、4番目のレコードを3つ取り出すことを意味します。

結果は次のとおりです:
-------------------------------------- ------

(mysql): select * from t LIMIT 1,3

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

注意! SelectLimit の記述方法は、MySQL 構文とはまったく逆です。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!