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 チュートリアルに興味のある友人の参考になれば幸いです。