


php が MySQL データベース サーバーに接続するときの 3 つの主要な API 間の違いと接続: mysql、mysqli、pdo_PHP チュートリアル
概要
このセクションでは、PHP アプリケーション開発中に Mysql データベースと対話する必要がある場合に使用できるオプションについて簡単に紹介します。
APIとは何ですか?
アプリケーション プログラミング インターフェイス (Application Programming Interface の略称) は、アプリケーションが特定のタスクを完了するために呼び出す必要があるクラス、メソッド、関数、変数などを定義します。 PHP アプリケーションがデータベースと対話する必要がある場合、必要な API は通常、PHP 拡張機能 (端末の PHP プログラマーによって呼び出される) を通じて公開されます。
API は手続き型またはオブジェクト指向にすることができます。手続き型 API の場合は関数を呼び出すことでタスクを完了しますが、オブジェクト指向 API の場合はクラスをインスタンス化し、インスタンス化後に取得したオブジェクトのメソッドを呼び出します。 2 つのインターフェイスのうち、後者はより現代的で、優れたコード構造を提供するため、通常は好まれます。
MySQL サーバーに接続する必要がある PHP アプリケーションを構築する場合、選択できる API がいくつかあります。このドキュメントでは、利用可能な API について説明し、アプリケーションに最適なソリューションを選択する方法について説明します。
コネクタとは何ですか?
MySQL のドキュメントでは、connector という用語は、「アプリケーションが MySQL データベース サーバーに接続できるようにするソフトウェア コードの一部」と説明されています。 MySQL は、PHP を含む多くの言語用のコネクタを提供します。
PHP アプリケーションがデータベース サーバーと対話する必要がある場合、「データベース サーバーへの接続」、「データベースのクエリ」、およびその他のデータベース関連機能などの一連のアクティビティを完了するための PHP コードを作成する必要があります。 PHP アプリケーションは、これらの API を提供するソフトウェア、または必要に応じて中間ライブラリを使用して、アプリケーションとデータベース サーバー間の対話を処理します。 この種のソフトウェアは通常、参照 をデータベース サーバーに接続 できるようにするコネクターとして考えられます。
ドライバーとは何ですか?
ドライバーは、特定の種類のデータベース サーバーと対話するように設計されたソフトウェア コードです。ドライバーは、MySQL クライアント ライブラリや MySQL ネイティブ ドライバー ライブラリなどのいくつかのライブラリを呼び出す場合があります。 これらのライブラリは、MySQL データベース サーバーと対話するための低レベル プロトコルを実装します。
例として、PDO (PHP Database Object の略語) データベース抽象化レイヤーでは、さまざまなデータベース固有のドライバーを使用できます。ドライバーの 1 つは PDO MYSQL ドライバーで、これは MySQL サーバーとのインターフェイスです。
場合によっては、コネクタとドライバーという用語を同じ意味で使用することがあります。 MySQL 関連のドキュメントでは、「ドライバー」という用語は、データベースの特定の部分にソフトウェア コードを提供するコネクタ パッケージとして使用されます。
拡張機能とは何ですか?
PHP ドキュメントには、他の多くの 拡張機能 もあります。 PHP コードは、コアと、コア機能を構成するいくつかのオプションの拡張機能で構成されます。 mysqli、mysql などの MySQL 関連の PHP 拡張機能は、すべて PHP 拡張フレームワークに基づいて実装されています。
拡張機能の一般的な機能は、API を PHP プログラマに公開し、プログラマが拡張機能を使用できるようにすることです。もちろん、PHP 拡張フレームワークに基づいて開発され、API インターフェイスを PHP プログラマに公開しない拡張機能もいくつかあります。
たとえば、PDO MySQL ドライバー拡張機能は API インターフェイスを PHP プログラマーに公開しませんが、その上の PDO レイヤーへのインターフェイスを提供します。
拡張機能は API インターフェイスをプログラマに公開する必要がない場合があるため、API と拡張機能という用語は同じものを表しません。
PHP for MySQL で提供される主な API は何ですか?
MySQL データベース サーバーへの接続を検討する場合、選択できる主要な API は 3 つあります:
-
PHP 用の MySQL 拡張機能
-
PHP 用の mysqli 拡張機能
-
PHP データオブジェクト (PDO)
3 つにはそれぞれ独自の長所と短所があります。以下の説明は、各 API の主要な側面を簡単に紹介することを目的としています。
PHP 用の MySQL 拡張機能とは何ですか?
これは、PHP アプリケーションが MySQL データベースと対話できるようにするために設計および開発された初期の拡張機能です。 mysql 拡張機能はプロシージャ指向のインターフェイスを提供し、MySQL 4.1.3 以前向けに設計されています。したがって、この拡張機能は MySQL 4.1.3 以降のデータベース サーバーと対話できますが、それ以降の MySQL サーバーが提供する一部の機能はサポートしません。
注意:
MySQL 4.1.3 以降のサーバー バージョンを使用している場合は、代わりに mysqli 拡張機能を使用することを強くお勧めします。
mysql 拡張機能のソース コードは、PHP 拡張機能ディレクトリ ext/mysql にあります。
mysql 拡張機能の詳細については、「MySQL」を参照してください。
PHP 用の mysqli 拡張機能とは何ですか?
mysqli 拡張機能 (MySQL enhancement 拡張機能とも呼ばれます) を使用すると、MySQL 4.1.3 以降の新しい高度な機能を利用できます。 mysqli 拡張機能は PHP 5 以降に含まれています。
mysqli 拡張機能には、mysql 拡張機能と比較して、次のような利点があります。
-
オブジェクト指向インターフェース
-
Prepared Statement のサポート (訳: prepare については mysql 関連ドキュメントを参照してください)
-
複数ステートメントの実行サポート
-
取引サポート
-
強化されたデバッグ機能
-
組み込みサービスのサポート
オブジェクト指向のインターフェイスを提供すると同時に、プロセス指向のインターフェイスも提供します。注意:
MySQL 4.1.3 以降を使用している場合は、この拡張機能を使用することを強く お勧めします。
mysqli 拡張機能は PHP 拡張機能フレームワークを使用して構築されており、そのソース コードは PHP ソース コード ディレクトリの ext/mysqli にあります。
mysqli 拡張機能の詳細については、「Mysqli」を参照してください。
PDOとは何ですか?
PHP データ オブジェクトは、PHP アプリケーションのデータベース抽象化レイヤー仕様です。 PDO は、PHP アプリケーションが接続する特定のデータベース サーバー システム タイプを気にしないようにするための統合 API インターフェイスを提供します。つまり、PDO の API を使用すると、PHP コードを少し変更するだけで、必要に応じていつでもデータベース サーバー (Firebird から MySQL など) をシームレスに切り替えることができます。データベース抽象化レイヤーの他の例には、Java アプリケーションの JDBC や Perl の DBI などがあります。
もちろん、PDO には、クリーンでシンプル、ポータブルな API などの独自の進歩もあります。その主な欠点は、新しい MySQL サーバーによって提供されるすべての高度なデータベース機能の使用が制限されることです。たとえば、PDO では、MySQL でサポートされている複数ステートメントの実行を使用できません。
PDO は PHP 拡張フレームワークに基づいて実装されており、そのソース コードは PHP ソース コード ディレクトリの ext/pdo にあります。
PDO の詳細については、「PDO」を参照してください。
PDO の MySQL ドライバーとは何ですか?
少なくとも PHP プログラマーの観点からすると、PDO の MySQL ドライバーは API ではありません。実際、PDO の MySQL ドライバーは PDO 自体の下位レベルにあり、特定の MySQL 関数を提供します。プログラマーは PDO の API を直接呼び出し、PDO は PDO の MySQL ドライバーを使用して MySQL サーバーとの対話を完了します。
PDO の MySQL ドライバーは、多くの PDO ドライバーの 1 つです。その他の利用可能な PDO ドライバーには、Firebird、PostgreSQL などが含まれます。
PDO の MySQL ドライバーは、PHP 拡張フレームワークに基づいて実装されています。そのソース コードは、PHP ソース コード ディレクトリの ext/pdo_mysql にあります。 PHP プログラマーには API は公開されません。
PDO MySQL 拡張機能の詳細については、「MySQL (PDO)」を参照してください。
PHP 用 MySQL ネイティブ ドライバーとは何ですか?
MySQL データベース サーバーと対話するために、mysql 拡張機能、mysqli 拡張機能、および PDO MySQL ドライバーはすべて、必要なプロトコルを実装する基礎となるライブラリを使用します。以前は、使用可能なライブラリは MySQL クライアント ライブラリと libmysql だけでした。
ただし、libmysql に含まれるインターフェイスは、アプリケーションと PHP の対話用に最適化されていません。libmysql は元々 C アプリケーション用に設計されています。このため、MySQL ネイティブ ドライバー mysqlnd は、PHP アプリケーション用の libmysql の修正バージョンとして開発されました。
mysql、mysqli、および PDO Mysql ドライバーは、それぞれ libmysql または mysqlnd として構成して使用できます。 mysqlndPHPシステム専用に設計されたライブラリとして、libmysqlと比較してメモリと速度が大幅に向上しています。ぜひこれらの改善点を試してみてください。
注意:
MySQL Native ドライバーは、MySQL サーバーのバージョンが 4.1.3 以降の場合にのみ使用できます。
MySQL ネイティブ ドライバーは、PHP 拡張フレームワークに基づいて実装されています。ソース コードは、PHP ソース コード ディレクトリの ext/mysqlnd にあります。 PHP プログラマにはインターフェイスを公開しません。
機能の比較
次の表は、PHP の 3 つの主要な MySQL 接続メソッドの機能を比較しています。
PHP的mysqli扩展 | PDO (使用PDO MySQL驱动和MySQL Native驱动) | PHP的mysql扩展 | |
---|---|---|---|
引入的PHP版本 | 5.0 | 5.0 | 3.0之前 |
PHP5.x是否包含 | 是 | 是 | 是 |
MySQL开发状态 | 活跃 | 在PHP5.3中活跃 | 仅维护 |
在MySQL新项目中的建议使用程度 | 建议 - 首选 | 建议 | 不建议 |
API 文字セットのサポート | は | は | いいえ |
サーバー側のprepareステートメントのサポート | は | は | いいえ |
クライアント準備ステートメントのサポート | いいえ | は | いいえ |
ストアドプロシージャのサポート | は | は | いいえ |
複数のステートメント実行のサポート | は | ほとんど | いいえ |
MySQL4.1以降のすべての機能をサポートしていますか |

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

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

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
