ホームページ php教程 php手册 PHP の ADOdb クラス ライブラリ入門 (1)

PHP の ADOdb クラス ライブラリ入門 (1)

Jun 21, 2016 am 09:08 AM
gt php quot

アド

はじめに
なぜデータベース クラス ライブラリを使用するのですか?

初心者 (および一部の初心者以外) がよく犯す間違いは、アプリケーション開発時に将来のことを考慮していないことです。ある日、プログラムで別のデータベースを使用する必要が生じた場合、このバージョンのデータベース用にプログラムを書き直す必要がありますか?特に現在のデータベースが現在のニーズに適していない場合には、このようなことが起こる可能性はあります。 しかし、これをすべて実行してみると、思っているほど簡単ではないことがわかります。各 DBMS には異なる機能があるからです。たとえば、Mysql ではデータベースに接続する関数は mysql_connect() ですが、MSSQL では mssql_connect() です。すべてのコードを再検討し、データベース上で動作するすべての関数とクエリ構文を変更するのは、決して簡単な作業ではありません。プログラムは多くの場合、間違ったデータベースに関連付けられており、実行時に最適なパフォーマンスを達成できません。こうしてデータベース クラス ライブラリが誕生しました。同じコードで異なるデータベースを操作できるようになります。適切に設計されたデータベース クラス ライブラリは、このすべてを完全に変えることができます。これにより、最小限の変更で他のデータベースに切り替えることができます。接続するデータベース管理システムに関係なく、同じ関数と異なるパラメーターを使用するだけです。たとえば、ADOdb では、$db = NewADOConnection('access ') を $db = NewADOConnection('mysql') に変更するだけで、プログラムを Access データベースからデータベース内の Mysql に簡単に転送できます。現在、インターネット上には Pear や PHPlib などのデータベース ライブラリが多数あり、私も仕事で使用したことがありますし、おそらくあなたも使用したことがあるでしょう。ただし、この記事では、私にとって特に興味深い ADOdb にのみ焦点を当てます。この記事では、次のプロジェクトの開発にすぐに使用できるように、簡単な紹介のみを行います。今後の記事では、徐々に理解を深めていきます。

現在、ADOdb は、MySQL、PostgreSQL、Interbase、Firebird、Informix、Oracle、MS SQL 7、Foxpro、Access、ADO、Sybase、FrontBase、DB2、および汎用 ODBC を含むデータベースをサポートしています。

ADOdb のインストール
ADOdb のインストールは非常に簡単な作業で、賢い方であれば難しくないと思います。

まず、PHP バージョン 4.0.4 以降を実行していることを確認してください。 そうでない場合は、アップグレードすることを強くお勧めします。
PHP Everywhere サイトから .zip または .tgz ファイルをダウンロードし、選択したパスに解凍します。
このパスは Web ディレクトリ (WWWTREE、翻訳者注: Web ページが /www/ の下にある場合、このディレクトリは /www/here であってはなりません) の下にあってはなりません。 ADOdb のインクルード ファイルには .inc.php 拡張子が使用されているため、最悪の構成でもサーバーはこれらの .inc ファイルをブラウザにクリア テキストで表示しませんが、これを配置する動作を推奨したことはありません。 Web ページディレクトリ内のライブラリ関数ファイル。次に、ダウンロードしたファイル tar -zxvf adodb350.tgz を実行して解凍します。Windows では、お気に入りの解凍ソフトウェアを使用して、多くのサブディレクトリを含む adodb ディレクトリを取得できます。

インストールをテストします
さて、インストールをテストしましょう。 次の 3 行のコードをスクリプトに追加して、インストールが成功したかどうかをテストします。コード内のパラメータを独自のものに変更する場合は注意してください。

include("$adodb_path/adodb.inc.php"); // adodb ライブラリが含まれます
$db = NewADOConnection('$database_type') // 新しい接続
$db->Connect(" ", "$user", "$password", "$database_name");
これで、データベース接続オブジェクト $db が完成しました。 NewADOConnection の代わりに ADONewConnection を使用することもできます。これら 2 つは同じ関数の異なる名前です。 接続されたデータベース変数 $database_type は、実際の状況に基づいて必要なものに変更する必要があります。次のリストのいずれかを使用できます (括弧内は説明であり、コード内では使用しないでください):

access (Microsoft Access/Jet)
ado (汎用 ADO、他のすべての ADO ドライバーのベース)
ado_access (ADO を使用した Microsoft Access/Jet)
ado_mssql (ADO を使用した Microsoft SQL Server)
db2 (DB2)
vfp (Microsoft Visual FoxPro)
fbsql (FrontBase)
ibase (Interbase 6 以前)
firebird (Firebird)
informix72 (Informix 7.3 より前の Informix データベース)
informix (Informix)
maxsql (トランザクション サポート付きの MySQL)
mssql (Microsoft SQL Server 7)
mssqlpo (ポータブル mssql ドライバー)
mysql (トランザクション サポートなしの MySQL)
mysqlt (トランザクション サポート付きの MySQL) 、maxmysql と同一)
oci8 (Oracle 8/9)
oci805 (Oracle 8.0.5)
oci8po (Oracle 8/9 ポータブルドライバー)
odbc (汎用 ODBC、他のすべての ODBC ドライバーのベース)
odbc_mssql (MSSQL)
odbc_oracle (ODBC 経由の Oracle)
oracle (Oracle 7)
postgres (PostgreSQL)
postgres64 (PostgreSQL 6.4)
postgres7 (PostgreSQL 7、現在は postgres と同一)
sqlanywhere (Sybase SQL Anywhere)
sybase (Sybase)
リンク コードでエラー メッセージが表示された場合は、最初にパス変数またはリンク変数を確認する必要があります。 ADOdb のせいにする前に、これらの変数を正しく使用していることを確認してください。 (多くの友人は、これらの明らかなエラーの修正に多くの時間を費やしすぎます。) 接続にエラー プロンプトが表示されない場合は、プロジェクトで ADodb を使用できます。

スクリプトを通じてデータベースに接続します
上記のコードをコードに追加する前に、一歩下がってみましょう。上記のコードを独自の方法でカプセル化したほうがよいでしょう。これにより、プログラムの柔軟性と移植性が向上します。上記のコードをプロジェクトの各ファイルに直接挿入すると、将来プロジェクトのパスが変更された場合にエラーが発生しやすくなり、すべてのスクリプトを変更する必要が生じる可能性があります。これは、本来の使用目的に影響します。ライブラリ関数。また、パスワード情報が WEBTREE の下にあるため、隠れた危険が生じます。パスワード情報を別のインクルード ファイル、たとえば ADOdb インストール ディレクトリのどこかに置くことをお勧めします。プログラムを別のサーバーで実行している場合、ディレクトリ構造が同じであることは保証できないため、パスが正しいことを確認する必要があります。 PHP の自動インクルード機能を使用して、このファイルを自動的にインクルードすることをお勧めします。


include("$adodb_path/db_values.inc.php");
include("$adodb_path/adodb.inc.php");
$db = NewADOConnection('$database_type');
$db-> Connect("$host", "$user", "$password", "employees");

毎回新しい接続を作成するのではなく、永続的な接続も使用したい場合 (これにより、多くの WEB アプリケーションが高速化されますが、一部のデータベースはこれをサポートしていないことに注意してください)。 Connect の代わりに PConnect を使用できます。
ファイル db_values.inc.php はデータベース情報ファイルで、内容は次のとおりです (次のコードの変数を独自のものに変更する必要があります):

$database_type="mysql";
$host = "localhost"; // ローカル データベース
$user = "ian"
$password = "let_me_in"
?>

設定ファイルを php.ini 設定に自動的に含めるように設定できます。 PHP で変更された .ini の次の行:

; PHP ドキュメントの前後にファイルを自動的に追加します。
auto_prepend_file = /usr/local/build/apache/www/tool_lib/defaults.inc
auto_append_file =


ファイルdefaults.inc には $adbdb_path の値を変更します:

$adodb_path = "/usr/local/build/apache/www/tool_lib/";
?>

それを実現するには他の方法もあります。しかし、私はこれを見つけました。この方法は、移植時の複雑さを比較的軽減できます。


データベースからのSELECT操作
よく開発されたライブラリ関数とPHP自体が提供する関数の両方を使用する場合、データベースにアクセスする方法は数多くあります。どの方法を使用するかは完全にユーザー自身の好みによって異なります。
これは簡単な例です:

$sql = "従​​業員から姓、年齢を選択";
$rs = &$db->Execute($sql);
if (!$rs) {
print $db - >ErrorMsg(); // 結果が返されなかった場合はエラー メッセージを表示します
}
else {
while (!$rs->EOF) {
print $rs->fields[0].' $rs->fields[1].'
'
// field[0] は姓、fields[1] は年齢です
$rs->MoveNext(); // 次の行に移動します
}
}


上記の例では、$rs->fields は戻り値を含む配列です。配列インデックスには、次のように初期番号が割り当てられます。

$sql = "SELECT 姓、年齢 FROM 従業員";
$db->SetFetchMode(ADODB_FETCH_ASSOC) // 連想配列を返します
$ rs = &$db->Execute($sql);
if (!$rs) {
print $db->ErrorMsg(); // 結果が返されなかった場合はエラー メッセージを表示します
}
else {
while (!$rs->EOF) {
print $rs->fields['surname']." ".$rs->fields['age']."
" rs->MoveNext(); // 次の行に移動します
} // end while
} // end else


結果を参照する別のオプションの方法は、オブジェクトが返されるとして各レコードを表示することです。 ADOdb には、この関数を実装するための FetchNextObject() 関数があり、ポインタは自動的に次のレコードに移動します。

$sql = "従​​業員から姓、年齢を選択";
$db->SetFetchMode(ADODB_FETCH_ASSOC); // 連想配列を返す
$rs = &$db->Execute($sql);
if (! $rs) {
print $db->ErrorMsg() // 結果が返されなかった場合はエラー メッセージを表示します
}
// 結果をループします
while ($row = $rs->FetchNextObject()) {
// フィールド名は大文字である必要があります
print $row->SURNAME." ".$row->AGE."
";
}


レコードを挿入して更新します
基本的な INSERT 操作は便利で高速であり、構文は SELECT と同じです。

$sql = "従​​業員 (姓、年齢) の値に挿入 ('Clegg','43')";
if (!($db->Execute($sql))) {
print 'エラーinserting: '.$db->ErrorMsg().'
';
}


ライブラリ関数の本当の利点は、同じ構文を使用してレコードを異なるデータベースに配置できることです。以前は不可能です 絶対に不可能です。通常、2 つのシナリオが発生します。

最初のタイプは引用符です。すべての引用符はキャレット (つまり、` 記号、キーは Tab キーの上にあります) に置き換える必要があります。そうしないと、構文エラーが発生します。ただし、データベースによっては 1 つの一重引用符を使用する場合もあれば、2 つの一重引用符を使用する場合もあります。したがって、PHP のaddslashes() の代わりに、ADOdb で qstr() を使用する必要があります。こうすることで、戻り値は使用しているデータベースと一致します。

2 番目のタイプは日付です。多くのデータベースは、その日付タイプと一貫性がなく互換性のない形式を受け入れます。 ADOdb には、Unix タイムスタンプまたは ISO (Y-m-d) 形式をデータベースのニーズを満たす任意の形式に変換できる DBDate() 関数があります。 以下の例を参照してください:

$employee_surname = $db->qstr("d'Angelo");
$delivery_time = $db->DBDate(time());
// 上記の 2 つの関数は、引用符で囲まれているため、「$delivery_time」ではなく、$delivery_time になります
$sql = "INSERT INTOemployee_delivery (delivery_time,surname) 値 ($delivery_time,$employee_surname)";
if (!($db->Execute( $sql) )) {
print '挿入エラー: '.$db->ErrorMsg().'
';
}

まったく同じ方法でデータベースを更新できます。例:

$sql = "UPDATE 従業員 SET age='44' WHERE id='121')";
if (!($db->Execute($sql))) {
print '更新エラー: '.$db- >ErrorMsg ().'
';
}

上記は Adodb の基本的な操作の一部にすぎません。次回は、ADOdb によって提供されるいくつかのより深い操作に焦点を当てます。 このサイトは ADOdb の専門サイトであり、役立つヘルプ情報がたくさんあります。

この記事の元のアドレス: http://www.databasejournal.com/features/php/article.php/2222651




このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles