


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以降のすべての機能をサポートしていますか |

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









MySQLデータベースでは、ユーザーとデータベースの関係は、アクセス許可と表によって定義されます。ユーザーには、データベースにアクセスするためのユーザー名とパスワードがあります。許可は助成金コマンドを通じて付与され、テーブルはCreate Tableコマンドによって作成されます。ユーザーとデータベースの関係を確立するには、データベースを作成し、ユーザーを作成してから許可を付与する必要があります。

MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

データ統合の簡素化:AmazonrdsmysqlとRedshiftのゼロETL統合効率的なデータ統合は、データ駆動型組織の中心にあります。従来のETL(抽出、変換、負荷)プロセスは、特にデータベース(AmazonrdsmysQlなど)をデータウェアハウス(Redshiftなど)と統合する場合、複雑で時間がかかります。ただし、AWSは、この状況を完全に変えたゼロETL統合ソリューションを提供し、RDSMYSQLからRedshiftへのデータ移行のための簡略化されたほぼリアルタイムソリューションを提供します。この記事では、RDSMysQl Zero ETLのRedshiftとの統合に飛び込み、それがどのように機能するか、それがデータエンジニアと開発者にもたらす利点を説明します。

1.正しいインデックスを使用して、データの量を削減してデータ検索をスピードアップしました。テーブルの列を複数回検索する場合は、その列のインデックスを作成します。あなたまたはあなたのアプリが基準に従って複数の列からのデータが必要な場合、複合インデックス2を作成します2。選択した列のみを避けます。必要な列のすべてを選択すると、より多くのサーバーメモリを使用する場合にのみサーバーが遅くなり、たとえばテーブルにはcreated_atやupdated_atやupdated_atなどの列が含まれます。

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

データベース酸属性の詳細な説明酸属性は、データベーストランザクションの信頼性と一貫性を確保するための一連のルールです。データベースシステムがトランザクションを処理する方法を定義し、システムのクラッシュ、停電、または複数のユーザーの同時アクセスの場合でも、データの整合性と精度を確保します。酸属性の概要原子性:トランザクションは不可分な単位と見なされます。どの部分も失敗し、トランザクション全体がロールバックされ、データベースは変更を保持しません。たとえば、銀行の譲渡が1つのアカウントから控除されているが別のアカウントに増加しない場合、操作全体が取り消されます。 TRANSACTION; updateaccountssetbalance = balance-100wh

MySQLのユーザー名とパスワードを入力するには:1。ユーザー名とパスワードを決定します。 2。データベースに接続します。 3.ユーザー名とパスワードを使用して、クエリとコマンドを実行します。

MySQLのコピーと貼り付けには、次の手順が含まれています。データを選択し、Ctrl C(Windows)またはCMD C(MAC)でコピーします。ターゲットの場所を右クリックして、貼り付けまたはCTRL V(Windows)またはCMD V(MAC)を使用します。コピーされたデータは、ターゲットの場所に挿入されるか、既存のデータを置き換えます(データが既にターゲットの場所に存在するかどうかに応じて)。
