PHP は初期の頃から MySQL をサポートしており、その 2 番目のバージョンには API が含まれています。この 2 つの組み合わせは非常に一般的であるため、この拡張機能はデフォルトで有効になっています。ただし、PHP 5 では、MySQL 改良版 (略して mysqli) と呼ばれる新しい MySQL 拡張機能がリリースされました。
なぜ新しい拡張機能があるのですか?理由は 2 つあります。まず、MySQL は急速に進化しており、古い拡張機能に依存しているユーザーは、プリペアド ステートメント、高度な接続オプション、セキュリティの強化などの新機能を利用できません。第 2 に、古い拡張機能は確かに使用には問題ありませんでしたが、多くの人が手続き型インターフェイスは時代遅れであると考え、他のアプリケーションとの緊密な統合だけでなく、必要に応じてインターフェイスを拡張できるオブジェクト指向インターフェイスを好みました。これらの欠点に対処するために、MySQL 開発者はその拡張機能を改良する時期が来たと判断し、内部動作を変更してパフォーマンスを向上させるだけでなく、新しいバージョンの MySQL で利用可能な機能の使用を容易にする追加機能も導入しました。
いくつかの重要な改善点:
# オブジェクト指向: MySQL 拡張機能は一連のクラスにカプセル化されているため、多くの人が PHP の従来の手続き型アプローチよりも便利で効率的であると考えるプログラミング パラダイムの使用が促進されます。ただし、手続き型パラダイムを好む人は心配する必要はありません。従来の手続き型インターフェイスも提供されるからです。
# プリペアドステートメント: SQL インジェクション攻撃を防ぐことができます。これにより、繰り返し実行されるクエリのオーバーヘッドや不便さが解消されます。
# トランザクションのサポート: PHP のオリジナルの MySQL 拡張機能もトランザクション関数をサポートできますが、mysqli 拡張機能はこれらの関数にオブジェクト指向のインターフェイスを提供します。
# 強化されたデバッグ機能: mysqli 拡張機能はクエリをデバッグするための多くのメソッドを提供し、開発プロセスをより効率的にします。
# 組み込みサーバーのサポート: MySQL 4.0 リリースでは組み込み MySQL サーバー ライブラリが導入されているため、興味のあるユーザーはデスクトップ アプリケーションなどのクライアント アプリケーションで完全な MYSQL サーバーを実行できます。 mysqli 拡張機能は、これらの組み込み MySQL サーバーに接続して操作するためのメソッドを提供します。
# マスター/スレーブのサポート: MySQL 3.23.15 以降、MySQL はレプリケーションのサポートを提供します。 mysqli 拡張機能を使用すると、クエリが複製された構成のマスター サーバーに確実にルーティングされるようになります。
オリジナルの MySQL 拡張機能に慣れているユーザーは、ほぼ同じ命名規則を持つ強化された mysqli 拡張機能に非常に親しみを感じるでしょう。たとえば、データベース接続関数は、mysql_connect ではなく mysqli_connect と呼ばれます。
1. インストールの前提条件
PHP 5 以降、MySQL サポートは標準の PHP 配布パッケージにバンドルされていません。したがって、この拡張機能を利用するには、PHP を明示的に構成する必要があります。
1.1. Linux/UNIX で mysqli 拡張機能を有効にする
PHP を設定するときに --with-mysqli フラグを使用します。これは、MySQL 4.1 以降の mysql_config プログラムの場所を指す必要があります。
1.2. Windows で mysqli 拡張機能を有効にするには
php.ini を変更し、この行のコメントを解除する必要があります: extension=php_mysqli.dll 。もちろん、拡張機能を有効にする前に、PHP の extension_dir ディレクティブが適切なディレクトリを指していることを確認してください。
1.3. MYSQL ローカルドライバーを使用する
長い間、PHP では、MYSQL サーバーがローカルか他の場所にあるかに関係なく、PHP プログラムを実行するサーバーに MySQL クライアント ライブラリをインストールする必要がありました。 PHP 5.3 では、この要件が削除され、MySQL Native Driver (mysqlnd とも呼ばれる) と呼ばれる新しい MySQL ドライバーが導入されています。これには、先ほど述べたドライバーに比べて多くの利点があります。これは新しい API ではなく、既存の API (mysql、mysqli、PDO_MySQL) が MySQL サーバーと通信するために利用できる新しい「コンジット」です。 (よほどの理由がない限り) 他のドライバーの代わりに mysqlnd を使用することをお勧めします。
拡張機能を付けて mysqlnd を使用するには、PHP を再コンパイルする必要があります (例: --with-mysqli=mysqlnd)。 %>./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd など、さらにいくつか指定することもできます。mysqlnd ドライバーにはいくつかの制限があります。現在、圧縮や SSL のサポートは提供されていません。
1.4. ユーザー権限の管理
スクリプトが MySQL サーバーへの接続を初期化すると、権限が渡されて検証されます。権限の検証が必要なコマンドを送信する場合も同様です。ただし、実行ユーザーを確認する必要があるのは、接続するときだけです。後で新しい接続が確立されない限り、それ以降のスクリプトの実行は常にそのユーザーになります。
1.5. サンプルデータを使用する
新しい知識を学ぶときにいくつかの例を追加するのは簡単です。データベース: 企業; テーブル: products
CREATE TABLE products (
id INT NOT NULL AUTO_INCREMENT、
sku VARCHAR(8) NOT NULL、
name VARCHAR(100) NOT NULL、
価格 DECIMAL(5,2 ) NULL ではありません、
主キー (id)
)
=================================== = =======================================
2. mysqli 拡張機能を使用します
2.1 、接続の確立と切断
まずサーバーに接続し、次にデータベースを選択して、接続を閉じます。オブジェクト指向と手続き型は両方とも可能なスタイルです。
オブジェクト指向インターフェイスを使用して MySQL サーバーと対話するには、まず mysqli クラスのコンストラクターを使用してインターフェイスをインスタンス化する必要があります。 : ) この関数の多くのパラメーターは、従来の mysql_connect() 関数と同じです。
$mysqli = new mysqli('localhost', 'catalog_user', 'secret', 'corporate');
ある時点で別のサーバーに切り替えるか、別のデータベースを選択したい場合は、 connect() を使用できます。および select_db() メソッド。 connect() メソッドのパラメータは、mysqli クラスのコンストラクタと同じです。
// mysqli クラスをインスタンス化します
$mysqli = new mysqli();
// データベースサーバーに接続し、データベースを選択します
$mysqli->connect('localhost', 'root', '' 、「企業」);
------------------------------------------ ------ --------------------------------------
か
// データベースサーバーに接続します
$mysqli = new mysqli('localhost', 'catalog_user', 'secret');
// データベースを選択します
$mysqli->select_db('corporate');
スクリプトが完了すると、実行されると、開いているデータベース接続が自動的に閉じられ、リソースが復元されます。ただし、実行中にページで複数のデータベース接続を使用する必要がある場合もあり、これらの接続を正しく閉じる必要があります。使用する接続が 1 つだけの場合でも、スクリプトの最後で接続を閉じることをお勧めします。 $mysqli->close()。
2.2. 接続エラーの処理
接続エラーは注意深く監視し、それに応じて対策を講じる必要があります。 mysqli 拡張機能は、エラー メッセージをキャッチするために使用できるいくつかの機能を提供します。別の方法は、例外を使用することです。たとえば、mysqli_connect_errno() および mysqli_connect_error() を使用して、MySQL 接続エラー メッセージを診断および表示できます。
2.3. エラーメッセージを取得する
2.3.1. エラーコードを取得する
errno() メソッドは、最後の MySQL 関数の実行中に生成されたエラー コードを返します。 0 はエラーがないことを意味します。
$mysqli = new mysqli('localhost', 'catalog_user', 'secret', 'corporate');
printf("Mysql エラー番号が生成されました: %d", $mysqli-> errno);
?>
2.3.2. エラー メッセージの取得
error() メソッドは、最後に生成されたエラー メッセージを返します。エラーがない場合は空の文字列が返されます。メッセージング言語は Mysql データベース サーバーに依存します。
2.4. 接続情報を別のファイルに保存する
安全なプログラミングの実践という観点からは、パスワードを定期的に変更することをお勧めします。データベースにアクセスするスクリプトも多く、一つ一つ修正するのは面倒です。解決策は、それを別のファイルに保存し、必要に応じて現在のファイルに含めることです。
たとえば、ヘッダー ファイル (mysql.connect.php) に mysqli コンストラクターを置くことができます:
$mysqli = new mysqli('localhost', 'catalog_user', 'secret', '企業');
?>
次に、それを他のファイルに含めます:
include 'mysql.connect.php'
// データベースの選択とクエリを開始します。
==================== まだ終わっていないので続きます
以上、PHP と MySQL の使い方を内容も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

PHPSESSIONの障害の理由には、構成エラー、Cookieの問題、セッションの有効期限が含まれます。 1。構成エラー:正しいセッションをチェックして設定します。save_path。 2.Cookieの問題:Cookieが正しく設定されていることを確認してください。 3.セッションの有効期限:セッションを調整してください。GC_MAXLIFETIME値はセッション時間を延長します。

PHPでセッションの問題をデバッグする方法は次のとおりです。1。セッションが正しく開始されるかどうかを確認します。 2.セッションIDの配信を確認します。 3.セッションデータのストレージと読み取りを確認します。 4.サーバーの構成を確認します。セッションIDとデータを出力し、セッションファイルのコンテンツを表示するなど、セッション関連の問題を効果的に診断して解決できます。

session_start()への複数の呼び出しにより、警告メッセージと可能なデータ上書きが行われます。 1)PHPは警告を発し、セッションが開始されたことを促します。 2)セッションデータの予期しない上書きを引き起こす可能性があります。 3)session_status()を使用してセッションステータスを確認して、繰り返しの呼び出しを避けます。

PHPでのセッションライフサイクルの構成は、session.gc_maxlifetimeとsession.cookie_lifetimeを設定することで達成できます。 1)session.gc_maxlifetimeサーバー側のセッションデータのサバイバル時間を制御します。 0に設定すると、ブラウザが閉じているとCookieが期限切れになります。

データベースストレージセッションを使用することの主な利点には、持続性、スケーラビリティ、セキュリティが含まれます。 1。永続性:サーバーが再起動しても、セッションデータは変更されないままになります。 2。スケーラビリティ:分散システムに適用され、セッションデータが複数のサーバー間で同期されるようにします。 3。セキュリティ:データベースは、機密情報を保護するための暗号化されたストレージを提供します。

PHPでのカスタムセッション処理の実装は、SessionHandlerInterfaceインターフェイスを実装することで実行できます。具体的な手順には、次のものが含まれます。1)CussentsessionHandlerなどのSessionHandlerInterfaceを実装するクラスの作成。 2)セッションデータのライフサイクルとストレージ方法を定義するためのインターフェイス(オープン、クローズ、読み取り、書き込み、破壊、GCなど)の書き換え方法。 3)PHPスクリプトでカスタムセッションプロセッサを登録し、セッションを開始します。これにより、データをMySQLやRedisなどのメディアに保存して、パフォーマンス、セキュリティ、スケーラビリティを改善できます。

SessionIDは、ユーザーセッションのステータスを追跡するためにWebアプリケーションで使用されるメカニズムです。 1.ユーザーとサーバー間の複数のインタラクション中にユーザーのID情報を維持するために使用されるランダムに生成された文字列です。 2。サーバーは、ユーザーの複数のリクエストでこれらの要求を識別および関連付けるのに役立つCookieまたはURLパラメーターを介してクライアントに生成および送信します。 3.生成は通常、ランダムアルゴリズムを使用して、一意性と予測不可能性を確保します。 4.実際の開発では、Redisなどのメモリ内データベースを使用してセッションデータを保存してパフォーマンスとセキュリティを改善できます。

APIなどのステートレス環境でのセッションの管理は、JWTまたはCookieを使用して達成できます。 1。JWTは、無国籍とスケーラビリティに適していますが、ビッグデータに関してはサイズが大きいです。 2.cookiesはより伝統的で実装が簡単ですが、セキュリティを確保するために慎重に構成する必要があります。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

WebStorm Mac版
便利なJavaScript開発ツール

ホットトピック









