mysqli 拡張サポートによって MySQL 4.1 以上で提供される機能を利用することが できるようになります。MySQL データベースサーバに関する詳細は http://www.mysql.com/ をご覧ください。
MySQL に関するドキュメントは http://dev.mysql.com/doc/ にあります。
このドキュメントの一部は、MySQL AB の許可を得て MySQL マニュアルから引用 したものです。
これらの関数を有効にするには、mysqli 拡張サポートを 有効にして PHP をコンパイルする必要があります。
注意: mysqli 拡張サポートは MySQL 4.1.3 以上で動作するよう設計されています。 それ以前のバージョンについては MySQL 拡張サポートのドキュメントをご覧ください。
PHP に mysqli 拡張サポートを追加するには、
--with-mysqli=mysql_config_path/mysql_config
オプションを指定して PHP をコンパイルする必要があります。
mysql_config_path には MySQL 4.1 以上に付属する
mysql_config プログラムが存在するパスを
指定してください。
mysqli 拡張サポートと標準の mysql 拡張を共存させる形でインストールしたい 場合には、衝突を避けるために同じクライアントライブラリを利用する必要があります。
MySQLi はデフォルトでは有効となりません。したがって php.ini
で php_mysqli.dll DLL を有効にしておく必要があります。
また、PHP が MySQL クライアントライブラリにアクセスできなければなりません。
libmysql.dll というファイルが Windows 版の PHP
配布ファイルに含まれており、PHP が MySQL と話すためにはこのファイルが
Windows の PATH
にある必要があります。そのための方法については、
"Windows で PHP
のディレクトリを PATH に追加するにはどうすればいいのですか?"
という FAQ を参照してください。
libmysql.dll を Windows
のシステムディレクトリにコピーしても動作しますが
(システムディレクトリは、デフォルトでシステムの PATH
に含まれています)、お勧めしません。
(php_mysqli.dll も含めた) PHP 拡張モジュールを有効にするには、PHP ディレクティブ extension_dir に拡張モジュールの存在する場所を設定するべきです。 Windows へのマニュアルインストール方法 も参照してください。PHP 5 での extension_dir の例は c:\php\ext です。
注意: Web サーバの起動時に以下のようなエラーが発生する場合: "Unable to load dynamic library './php_mysqli.dll'" これは php_mysqli.dll や libmysql.dll がシステムによって見つけられなかったことが原因です。
php.ini の設定により動作が変化します。
表 1. MySQLi 設定オプション
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
mysqli.max_links | "-1" | PHP_INI_SYSTEM | PHP 5.0.0 以降で使用可能です。 |
mysqli.default_port | "3306" | PHP_INI_ALL | PHP 5.0.0 以降で使用可能です。 |
mysqli.default_socket | NULL | PHP_INI_ALL | PHP 5.0.0 以降で使用可能です。 |
mysqli.default_host | NULL | PHP_INI_ALL | PHP 5.0.0 以降で使用可能です。 |
mysqli.default_user | NULL | PHP_INI_ALL | PHP 5.0.0 以降で使用可能です。 |
mysqli.default_pw | NULL | PHP_INI_ALL | PHP 5.0.0 以降で使用可能です。 |
PHP_INI_* 定数の詳細と定義については、 設定の変更 を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
mysqli.max_links
integerプロセス毎の MySQL 接続の最大数。
mysqli.default_port
string
他のポートが指定されない場合、データベースサーバ接続時に使用される
デフォルトの TCP ポート番号。デフォルトが指定されない場合は、
環境変数 MYSQL_TCP_PORT
・
/etc/services の
mysql-tcpエントリ・コンパイル時の
MYSQL_PORT 定数の順番でポートが取得されます。
Win32 では、MYSQL_PORT 定数のみが使用されます。
mysqli.default_socket
string他にソケット名が指定されない場合、ローカルな データベースサーバに接続する時のデフォルトのソケット名。
mysqli.default_host
string他のサーバ名が指定されない場合に、データベースサーバへの接続時に 使用されるデフォルトのサーバ名。 safe mode では適用されません。
mysqli.default_user
string他のユーザ名が指定されない場合に、データベースサーバへの接続時に 使用されるデフォルトのユーザ名。 safe mode では適用されません。
mysqli.default_password
string他のパスワードが指定されない場合に、データベースサーバへの接続時に 使用されるデフォルトのパスワード。 safe mode では適用されません。
PHP と MySQL データベースの間の接続を表します。
autocommit - データベース変更時のオートコミットをオンまたはオフにします
change_user - 指定したデータベース接続のユーザを変更します
character_set_name - データベース接続のデフォルトの文字セットを返します
close - オープンされている接続をクローズします
commit - カレントのトランザクションをコミットします
connect - MySQL データベースサーバーへの新規接続をオープンします
debug - デバッグ処理を行います
dump_debug_info - デバッグ情報をダンプします
get_client_info - クライアントのバージョンを返します
get_host_info - 使用されている接続の型を返します
get_server_info - MySQL サーバーのバージョンを返します
get_server_version - MySQL サーバーのバージョンを返します
init - mysqli オブジェクトを初期化します
info - 直近に実行されたクエリに関する情報を取得します
kill - 指定した MySQL スレッドをキルするようサーバーに指示します
multi_query - 複数のクエリを実行します
more_results - 実行した複数のクエリについて結果がまだ残ってるかどうかを確認します
next_result - 実行した複数のクエリから次の結果を読み込みます
options - オプションを設定します
ping - 指定したサーバー接続に ping を行い、接続がない場合には再接続します
prepare - SQL クエリをパースします
query - クエリを実行します
real_connect - MySQL データベースサーバーへの接続をオープンします
escape_string - 接続に使用する文字セットを考慮して SQL 命令が含まれる文字列の中の特殊文字をエスケープします
rollback - カレントのトランザクションをロールバックします
select_db - デフォルトのデータベースを選択します
set_charset - デフォルトのクライアント文字セットを設定します
ssl_set - SSL パラメータを設定します
stat - カレントのシステムステータスを取得します
stmt_init- mysqli_stmt_prepare で利用するステートメントを初期化します
store_result - 直近のクエリから結果セットを伝送します
thread_safe - スレッドセーフかどうかを返します
use_result - 直近のクエリからバッファリングされていない結果セットを伝送します
affected_rows - 直近の MySQL 操作で変更された行の数を取得します
client_info - MySQL クライアントのバージョンを文字列で返します
client_version - MySQL クライアントのバージョンを整数で返します
errno - 直近にコールされた関数のエラーコードを返します
error - 直近にコールされた関数のエラー文字列を返します
field_count - 直近のクエリのカラム数を返します
host_info - 使用されている接続の型を返します
info - 直近に実行されたクエリについての情報を取得します
insert_id - 直近のクエリで使用された、自動生成 ID を返します
protocol_version - 使用されている MySQL プロトコルのバージョンを返します
server_info - サーバのバージョン番号を表す文字列を返します
server_version - サーバのバージョン番号を整数値で返します
sqlstate - 直近のエラーについて、SQLSTATE エラーコードを含む文字列を返します
thread_id - カレントの接続のスレッド ID を返します
warning_count - 直近の SQL ステートメントの中で発生した警告の数を返します
プリペアドステートメントを表します。
bind_param - 変数をプリペアドステートメントにバインドします
bind_result - 結果を保存するため、変数をプリペアドステートメントにバインドします
close - プリペアドステートメントを閉じます
data_seek - ステートメント結果セットの任意の行に移動します
execute - プリペアドステートメントを実行します
fetch - プリペアドステートメントから結果を取得し、バインドした変数に保存します
free_result - 指定したステートメントハンドルの結果を保存しているメモリを開放します
prepare - SQL クエリを準備します
reset - プリペアドステートメントをリセットします
result_metadata - プリペアドステートメントから、メタ情報の結果セットを取得します
send_long_data - データを分割して送信します
store_result - プリペアドステートメントの結果をすべてメモリに保存します
affected_rows - 直近のステートメントの実行により更新された行数を返します
errno - 直近のステートメントのエラーコードを返します
error - 直近のステートメントのエラー文字列を返します
field_count - 結果セットのカラムの数を返します
id - ステートメントの ID を返します
insert_id - プリペアドステートメントで AUTO_INCREMENT のカラムに設定された値を返します
num_rows - 結果セットの行の数を返します
param_count - 指定したプリペアドステートメントのパラメータ数を返します
sqlstate - 直近のステートメントについて SQLSTATE エラーコードを含む文字列を返します
データベースへのクエリにより得られた結果セットを表します。
close - 結果セットを閉じます
data_seek - 内部の結果ポインタを移動します
fetch_array - 結果の行を連想配列・数値添字配列あるいはその両方で取得します
fetch_assoc - 結果の行を連想配列で取得します
fetch_field - 結果セットからカラムの情報を取得します
fetch_fields - 結果セットからすべてのカラムの情報を取得します
fetch_field_direct - 指定したカラムの情報を取得します
fetch_object - 結果の行をオブジェクトで取得します
fetch_row - 結果の行を数値添字の配列で取得します
field_seek - 結果ポインタを指定したフィールドオフセットに移動します
free_result - 結果のメモリを開放します
current_field - 現在のフィールドポインタのオフセットを返します
field_count - 結果セットのフィールド数を返します
lengths - カラムの長さの配列を返します
num_rows - 結果の行数を返します
type - MYSQLI_STORE_RESULT あるいは MYSQLI_USE_RESULT を返します
表 2. MySQLi 定数
定数名 | 説明 |
---|---|
MYSQLI_READ_DEFAULT_GROUP (integer) | `my.cnf' の指定した名前のグループか、あるいは MYSQLI_READ_DEFAULT_FILE で指定したファイルからオプションを読み込みます。 |
MYSQLI_READ_DEFAULT_FILE (integer) | my.cnf のかわりに、指定したファイルからオプションを 読み込みます。 |
MYSQLI_OPT_CONNECT_TIMEOUT (integer) | 接続のタイムアウトまでの秒数。 |
MYSQLI_OPT_LOCAL_INFILE (integer) | LOAD LOCAL INFILE コマンドを有効にします。 |
MYSQLI_INIT_COMMAND (integer) | MySQL サーバへの接続時に実行するコマンド。 再接続時にも自動的に再実行されます。 |
MYSQLI_CLIENT_SSL (integer) | SSL(暗号化プロトコル)を使用します。このオプションは、アプリケーション プログラムで指定することはできず、MySQL クライアントライブラリの内部で設定します。 |
MYSQLI_CLIENT_COMPRESS (integer) | 圧縮プロトコルを使用します。 |
MYSQLI_CLIENT_INTERACTIVE (integer) | (wait_timeout のかわりに)interactive_timeout の秒数を使用できるように します。クライアントセッションの wait_timeout 変数の値は、interactive_timeout 変数の値に設定されます。 |
MYSQLI_CLIENT_IGNORE_SPACE (integer) | 関数名に続く空白文字を許可します。すべての関数名を予約語とします。 |
MYSQLI_CLIENT_NO_SCHEMA (integer) | db_name.tbl_name.col_name 形式の使用を禁止します。 |
MYSQLI_CLIENT_MULTI_QUERIES (integer) | |
MYSQLI_STORE_RESULT (integer) | 結果セットをバッファに格納します。 |
MYSQLI_USE_RESULT (integer) | 結果セットをバッファに格納しません。 |
MYSQLI_ASSOC (integer) | 行データを、カラム名をインデックスとする配列に格納して返します。 |
MYSQLI_NUM (integer) | 行データを、数値インデックスの配列に格納して返します。 |
MYSQLI_BOTH (integer) | 行データを、数値インデックス・カラム名インデックスの両方を 保持する配列に格納して返します。 |
MYSQLI_NOT_NULL_FLAG (integer) | フィールドは、NOT NULL と定義されています。 |
MYSQLI_PRI_KEY_FLAG (integer) | フィールドは、プライマリキーの一部です。 |
MYSQLI_UNIQUE_KEY_FLAG (integer) | フィールドは、ユニークキーの一部です。 |
MYSQLI_MULTIPLE_KEY_FLAG (integer) | フィールドは、インデックスの一部です。 |
MYSQLI_BLOB_FLAG (integer) | フィールドは BLOB と定義されています。 |
MYSQLI_UNSIGNED_FLAG (integer) | フィールドは UNSIGNED と定義されています。 |
MYSQLI_ZEROFILL_FLAG (integer) | フィールドは ZEROFILL と定義されています。 |
MYSQLI_AUTO_INCREMENT_FLAG (integer) | フィールドは AUTO_INCREMENT と定義されています。 |
MYSQLI_TIMESTAMP_FLAG (integer) | フィールドは TIMESTAMP と定義されています。 |
MYSQLI_SET_FLAG (integer) | フィールドは SET と定義されています。 |
MYSQLI_NUM_FLAG (integer) | フィールドは NUMERIC と定義されています。 |
MYSQLI_PART_KEY_FLAG (integer) | フィールドは、マルチインデックスの一部です。 |
MYSQLI_GROUP_FLAG (integer) | フィールドは GROUP BY の一部です。 |
MYSQLI_TYPE_DECIMAL (integer) | フィールドは DECIMAL と定義されています。 |
MYSQLI_TYPE_NEWDECIMAL (integer) | 精密な DECIMAL あるいは NUMERIC のフィールドです (MySQL 5.0.3 以降)。 |
MYSQLI_TYPE_BIT (integer) | フィールドは BIT と定義されています (MySQL 5.0.3 以降)。 |
MYSQLI_TYPE_TINY (integer) | フィールドは TINYINT と定義されています。 |
MYSQLI_TYPE_SHORT (integer) | フィールドは INT と定義されています。 |
MYSQLI_TYPE_LONG (integer) | フィールドは INT と定義されています。 |
MYSQLI_TYPE_FLOAT (integer) | フィールドは FLOAT と定義されています。 |
MYSQLI_TYPE_DOUBLE (integer) | フィールドは DOUBLE と定義されています。 |
MYSQLI_TYPE_NULL (integer) | フィールドは DEFAULT NULL と定義されています。 |
MYSQLI_TYPE_TIMESTAMP (integer) | フィールドは TIMESTAMP と定義されています。 |
MYSQLI_TYPE_LONGLONG (integer) | フィールドは BIGINT と定義されています。 |
MYSQLI_TYPE_INT24 (integer) | フィールドは MEDIUMINT と定義されています。 |
MYSQLI_TYPE_DATE (integer) | フィールドは DATE と定義されています。 |
MYSQLI_TYPE_TIME (integer) | フィールドは TIME と定義されています。 |
MYSQLI_TYPE_DATETIME (integer) | フィールドは DATETIME と定義されています。 |
MYSQLI_TYPE_YEAR (integer) | フィールドは YEAR と定義されています。 |
MYSQLI_TYPE_NEWDATE (integer) | フィールドは DATE と定義されています。 |
MYSQLI_TYPE_ENUM (integer) | フィールドは ENUM と定義されています。 |
MYSQLI_TYPE_SET (integer) | フィールドは SET と定義されています。 |
MYSQLI_TYPE_TINY_BLOB (integer) | フィールドは TINYBLOB と定義されています。 |
MYSQLI_TYPE_MEDIUM_BLOB (integer) | フィールドは MEDIUMBLOB と定義されています。 |
MYSQLI_TYPE_LONG_BLOB (integer) | フィールドは LONGBLOB と定義されています。 |
MYSQLI_TYPE_BLOB (integer) | フィールドは BLOB と定義されています。 |
MYSQLI_TYPE_VAR_STRING (integer) | フィールドは VARCHAR と定義されています。 |
MYSQLI_TYPE_STRING (integer) | フィールドは CHAR と定義されています。 |
MYSQLI_TYPE_GEOMETRY (integer) | フィールドは GEOMETRY と定義されています。 |
MYSQLI_NEED_DATA (integer) | バインド変数に、さらにデータを使用可能です。 |
MYSQLI_NO_DATA (integer) | バインド変数に使用可能なデータがありません。 |
MYSQLI_DATA_TRUNCATED (integer) | データのトランケーションが発生しました。PHP 5.1.0 および MySQL 5.0.5 以降で使用可能です。 |
MySQLI ドキュメンテーションのすべての例では、MySQL AB の world データベースを使用しています。これは http://dev.mysql.com/get/Downloads/Manual/world.sql.gz/from/pick にあります。