MaxDB PHP 拡張モジュール
導入
MaxDB PHP 拡張モジュールにより、MaxDB 7.5.0 以降にアクセスできるようになります。 MaxDB データベースサーバについての詳細な情報は » https://www.mysql.com/products/maxdb/ で得られます。
MaxDB PHP 拡張モジュールは、MySQL の mysqli 拡張モジュールと互換性があります。 これらの間にはほんの少しの違いしかなく、その違いは MaxDB と MySQL の違いに基づくものです。
mysqli との主な相違点は、以下のようになります。
- maxdb_character_set_name() - ascii あるいは unicode しか返しません。
- maxdb_get_client_info() - 異なるバージョン文字列を返します。
- maxdb_get_client_version() - 異なるバージョン文字列を返します。
- maxdb_get_host_info() - localhost あるいはホスト名を返します。
- maxdb_get_server_info() - 異なるバージョン文字列を返します。
- maxdb_get_server_version() - 異なるバージョン文字列を返します。
- maxdb_kill() - 単にセッションを切断するだけです。
- maxdb_multi_query() - 複数の SQL 文を扱うことはできません。
- maxdb_next_result() - 常に false を返します。
- maxdb_options() - サポートするオプションが異なります。
- maxdb_report() - サポートする繰り返しモードが異なります。
- maxdb_stat() - 異なるシステム状態文字列を返します。
- maxdb_stmt_store_result() - MaxDB では不要です。
- maxdb_store_result() - MaxDB では不要です。
MaxDB についてのドキュメントは » https://dev.mysql.com/doc/maxdb/ にあります。
要件
これらの関数を使用するには、MaxDB のサポートを有効にして PHP をコンパイルする必要があります。さらに、MaxDB サーバにアクセスするために MaxDB SQLDBC ランタイムライブラリが必要です。
MaxDB SQLDBC についてのドキュメントは » https://dev.mysql.com/doc/maxdb/ にあります。
MaxDB SQLDBC パッケージは » https://dev.mysql.com/downloads/maxdb/clients.html からダウンロードします。
インストール手順
設定オプション --with-maxdb[=DIR] を使用すると、PHP から MaxDB データベースへのアクセス機能が有効となります。 [DIR] には、MaxDB SQLDBC パッケージのインストールされているディレクトリを指定します。
Windows ユーザは、php.ini の中で php_maxdb.dll を有効にする必要があります。
実行時設定
php.ini の設定により動作が変化します。
名前 | デフォルト | 変更の可否 | 変更履歴 |
---|---|---|---|
maxdb.default_host | NULL | PHP_INI_ALL | |
maxdb.default_db | NULL | PHP_INI_ALL | |
maxdb.default_user | NULL | PHP_INI_ALL | |
maxdb.default_pw | NULL | PHP_INI_ALL | |
maxdb.long_readlen | "200" | PHP_INI_ALL |
以下に設定ディレクティブに関する 簡単な説明を示します。
- maxdb.default_host string
-
データベースサーバへの接続時、ホスト名が指定されていない場合に 使用するデフォルトのホスト。
- maxdb.default_db string
-
データベースが指定されていない場合に、 接続時に使用するデフォルトのサーバデータベース。
- maxdb.default_user string
-
データベースサーバへの接続時、ユーザ名が指定されていない場合に 使用するデフォルトのユーザ名。
- maxdb.default_pw string
-
データベースサーバへの接続時、パスワードが指定されていない場合に 使用するデフォルトのパスワード。
- maxdb.long_readlen integer
-
MaxDB データベースサーバからロングデータを取得した場合に、 クライアントに転送される最大バイト数のデフォルト値。
定義済みクラス
maxdb
PHP と MaxDB データベースとの間の接続を表します。
コンストラクタ
-
maxdb - 新しい maxdb オブジェクトを作成する
メソッド
-
autocommit - データベースの変更内容の自動コミット機能を有効あるいは無効にする
-
change_user - 指定したデータベース接続のユーザ名を変更する
-
character_set_name - データベース接続のデフォルト文字セットを返す
-
close - 事前にオープンされた接続を閉じる
-
commit - 現在のトランザクションをコミットする
-
connect - MaxDB データベースサーバへの新しい接続をオープンする
-
debug - デバッグ操作を実行する
-
dump_debug_info - デバッグ情報を出力する
-
get_client_info - クライアントのバージョンを返す
-
get_host_info - 使用している接続の型を返す
-
get_server_info - MaxDB サーバのバージョンを返す
-
get_server_version - MaxDB サーバのバージョンを返す
-
init - maxdb オブジェクトを初期化する
-
info - 直近で実行されたクエリの情報を取得する
-
kill - MaxDB スレッドの終了をサーバに要求する
-
multi_query - 複数のクエリを実行する
-
more_results - 現在実行している複数クエリに次の結果があるかどうかを調べる
-
next_result - 現在実行している複数クエリの次の結果を読み込む
-
options - オプションを設定する
-
ping - サーバとの接続を確認し、接続されていない場合には再接続する
-
prepare - SQL クエリを準備する
-
query - クエリを実行する
-
real_connect - MaxDB データベースサーバとの接続をオープンする
-
escape_string - 接続の現在の文字セットを考慮したうえで、SQL 文で使用する文字列の特殊文字をエスケープする
-
rollback - 現在のトランザクションをロールバックする
-
select_db - デフォルトのデータベースを選択する
-
ssl_set - ssl パラメータを設定する
-
stat - 現在のシステム状態を取得する
-
stmt_init- maxdb_stmt_prepare で使用するステートメントを初期化する
-
store_result - 最後に実行したクエリの結果を転送する
-
use_result - 最後に実行したクエリのバッファ化されていない結果を転送する
-
thread-safe - スレッドセーフかどうかを返す
プロパティ
-
affected_rows - 直前の MaxDB 操作で変更された行数を取得する
-
client_info - MaxDB クライアントのバージョンを文字列で返す
-
client_version - MaxDB クライアントのバージョンを整数で返す
-
errno - 直近の関数コールのエラーコードを返す
-
error - 直近の関数コールのエラー文字列を返す
-
field_count - 直近のクエリのカラム数を返す
-
host_info - 使用している接続の型を表す文字列を返す
-
info - 直近に実行されたクエリについての情報を取得する
-
insert_id - 直近のクエリで使用した自動生成 ID を返す
-
protocol_version - 使用している MaxDB プロトコルのバージョンを返す
-
sqlstate - 直近のエラーについての SQLSTATE エラーコードを含む文字列を返す
-
thread_id - 現在の接続のスレッド ID を返す
-
warning_count - 直前の SQL 文の実行中に発生した警告の数を返す
maxdb_stmt
プリペアドステートメントを表します。
メソッド
-
bind_param - プリペアドステートメントに変数をバインドする
-
bind_result - 結果を保存するために、プリペアドステートメントに変数をバインドする
-
close - プリペアドステートメントを閉じる
-
data-seek - ステートメントの結果セットの任意の行に移動する
-
execute - プリペアドステートメントを実行する
-
fetch - プリペアドステートメントから結果を取得してバインド変数に保存する
-
free_result - 指定したステートメントハンドルの結果メモリを開放する
-
result_metadata - プリペアドステートメントからメタデータ情報の結果セットを取得する
-
prepare - SQL クエリを準備する
-
send_long_data - データをチャンクに送る
-
close_long_data - long データの送信を終了する
-
reset - プリペアドステートメントをリセットする
-
store_result - プリペアドステートメントから結果セット全体をバッファに保存する
プロパティ
-
affected_rows - 直近のステートメントの実行で変更された行数を返す
-
errno - 直近のステートメント関数のエラーコードを返す
-
errno - 直近のステートメントkな数のエラーメッセージを返す
-
param_count - 指定したプリペアドステートメントのパラメータの数を返す
-
sqlstate - 直近のステートメント関数の SQLSTATE エラーコードを含む文字列を返す
maxdb_result
データベースに対するクエリによって取得した結果セットを表します。
メソッド
-
close - 結果セットを閉じる
-
data_seek - 内部結果ポインタを移動する
-
fetch_field - 結果セットからカラム情報を取得する
-
fetch_fields - 結果セットの全てのカラムの情報を取得する
-
fetch_field_direct - 指定したカラムの情報を取得する
-
fetch_array - 連想配列、数値添字配列あるいはその両方で結果の行を取得する
-
fetch_assoc - 結果の行を連想配列で取得する
-
fetch_object - 結果の行をオブジェクトとして取得する
-
fetch_row - 結果の行を数値添字の配列で取得する
-
close - 結果のメモリを開放する
-
field_seek - 指定したフィールドオフセットに結果ポインタを移動する
プロパティ
-
current_field - 現在のフィールドポインタのオフセットを返す
-
field_count - 結果セットのフィールド数を返す
-
lengths - カラムの長さの配列を返す
-
num_rows - 結果セットの行数を返す
リソース型
この拡張モジュールではリソースを定義しています。
定義済み定数
以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
以下の定数が、maxdb_options() で使用するために定義されています。これらの定数についての詳細な情報は » https://dev.mysql.com/doc/maxdb/ を参照ください。
定数 | 説明 |
---|---|
MAXDB_COMPNAME | SQLDBC ランタイム環境を初期化するために使用するコンポーネント名。 |
MAXDB_APPLICATION | データベースに接続しているアプリケーション。 |
MAXDB_APPVERSION | アプリケーションのバージョン。 |
MAXDB_SQLMODE | SQL モード。 |
MAXDB_UNICODE | unicode (UCS2) クライアントによる接続の場合に TRUE、そうでない場合に FALSE。 |
MAXDB_TIMEOUT | データベースへの接続がシステムによって閉じられるまでの 最大無活動時間。 |
MAXDB_ISOLATIONLEVEL | 共有ロックおよび排他ロックを暗黙的に要求/開放するかどうか、 またどのように行うかを指定します。 |
MAXDB_PACKETCOUNT | 接続に使用するリクエストパケットの数。 |
MAXDB_STATEMENTCACHESIZE | 接続内での再利用のためにキャッシュされるプリペアドステートメントの数。 |
MAXDB_CURSORPREFIX | 自動的に命名される結果テーブルに使用するプレフィックス。 |
maxdb_fetch_array() 関数は、 結果の配列の型を指定するために定数を使用します。 以下の定数が定義されています。
定数 | 説明 |
---|---|
MAXDB_ASSOC | フィールド名をインデックスとする配列で、カラムを返します。 |
MAXDB_ASSOC_UPPER | 大文字に変換したフィールド名をインデックスとする配列で、 カラムを返します。 |
MAXDB_ASSOC_LOWER | 小文字に変換したフィールド名をインデックスとする配列で、 カラムを返します。 |
MAXDB_BOTH | 数値インデックスおよびフィールド名インデックスの両方を含む配列で、 カラムを返します。 |
MAXDB_NUM | フィールドの数値インデックスを持つ配列で、カラムを返します。 インデックスは 0 から始まり、これが結果の最初のフィールドを表します。 |
例
MaxDB PHP マニュアルの全ての例は、MaxDB から得られるデモデータベース HOTELDB を使用しています。このデータベースについての情報は » https://dev.mysql.com/doc/maxdb/en/98/11b83fa6b33c17e10000000a114084/frameset.htm で得られます。
MaxDB PHP マニュアルのデータベースを使用するには、チュートリアルのデータを データベースに読み込む必要があります。その後、php.ini の中の maxdb.default_db に、チュートリアルデータを含むデータベースを設定します。
この単純な例では、MaxDB データベースへの接続・クエリの実行・ 結果の行の表示・接続の切断の方法を示します。
Example#1 MaxDB 拡張モジュールの概要
<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");
/* 接続を調べます */
if (maxdb_connect_errno()) {
printf("接続に失敗しました: %s\n", maxdb_connect_error());
exit();
}
/* SQL クエリを実行します */
$query = "SELECT * FROM hotel.city";
$result = maxdb_query($link, $query) or die("クエリに失敗しました: " . maxdb_error());
/* 結果を HTML で表示します */
echo "<table>\n";
while ($line = maxdb_fetch_array($result, MAXDB_ASSOC)) {
echo " <tr>\n";
foreach ($line as $col_value) {
echo " <td>$col_value</td>\n";
}
echo " </tr>\n";
}
echo "</table>\n";
/* 結果セットを開放します */
maxdb_free_result($result);
/* 接続を閉じます */
maxdb_close($link);
?>
以下の例では、SELECT INTO 文に変数をバインドする方法を示します。
Example#2 SELECT INTO 文の使用例
<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");
/* 接続を調べます */
if (!$link) {
printf("接続に失敗しました: %s\n", maxdb_connect_error());
exit();
}
/* SQL クエリを実行します */
$stmt = maxdb_prepare ($link, "SELECT percentage INTO ? FROM hotel.countrylanguage where language = ?");
if (!$stmt) {
printf ("準備に失敗しました: %s\n", maxdb_error($link));
}
$name = "Mbundu";
maxdb_stmt_bind_param($stmt, 'ds', $percentage, $name);
maxdb_stmt_execute($stmt);
printf ("%f\n", $percentage);
maxdb_stmt_close ($stmt);
?>
以下の例では、MaxDB のプロシージャを使用する方法を示します。
Example#3 データベースプロシージャの使用
<?php
$link = maxdb_connect("localhost", "MONA", "RED", "DEMODB");
/* 接続を調べます */
if (!$link) {
printf("接続に失敗しました: %s\n", maxdb_connect_error());
exit();
}
maxdb_report (MAXDB_REPORT_OFF);
maxdb_query($link,"DROP DBPROC test_proc");
maxdb_report (MAXDB_REPORT_ERROR);
$query = "create dbproc test_proc (INOUT e_text char(72)) AS select * from SYSDBA.DUAL; fetch into :e_text;";
maxdb_query($link, $query);
/* SQL クエリを実行します */
$stmt = maxdb_prepare ($link, "CALL test_proc (?)");
if (!$stmt) {
printf ("準備に失敗しました: %s\n", maxdb_error($link));
}
maxdb_stmt_bind_param($stmt, 's', $result);
maxdb_stmt_execute($stmt);
printf ("%s\n", $result);
maxdb_stmt_close ($stmt);
?>
目次
- maxdb_affected_rows — 直前の MaxDB の操作で変更された行数を取得する
- maxdb_autocommit — データベースの変更内容の自動コミット機能を有効あるいは無効にする
- maxdb_bind_param — maxdb_stmt_bind_param のエイリアス
- maxdb_bind_result — maxdb_stmt_bind_result のエイリアス
- maxdb_change_user — 指定したデータベース接続のユーザを変更する
- maxdb_character_set_name — データベース接続のデフォルトの文字セットを返す
- maxdb_client_encoding — maxdb_character_set_name のエイリアス
- maxdb_close_long_data — maxdb_stmt_close_long_data のエイリアス
- maxdb_close — 事前にオープンされたデータベース接続を閉じる
- maxdb_commit — 現在のトランザクションをコミットする
- maxdb_connect_errno — 直近の接続コールのエラーコードを返す
- maxdb_connect_error — 直近の接続エラーについての説明を文字列で返す
- maxdb_connect — MaxDB サーバへの新しい接続をオープンする
- maxdb_data_seek — 結果ポインタを、結果の任意の行に移動する
- maxdb_debug — デバッグ操作を行う
- maxdb_disable_reads_from_master — マスタからの読み込みを無効にする
- maxdb_disable_rpl_parse — RPL のパースを無効にする
- maxdb_dump_debug_info — デバッグ情報をログに出力する
- maxdb_embedded_connect — 組み込み MaxDB サーバへの接続をオープンする
- maxdb_enable_reads_from_master — マスタからの読み込みを有効にする
- maxdb_enable_rpl_parse — RPL のパースを有効にする
- maxdb_errno — 直近の関数コールのエラーコードを返す
- maxdb_error — 直近のエラーについて説明する文字列を返す
- maxdb_escape_string — maxdb_real_escape_string のエイリアス
- maxdb_execute — maxdb_stmt_execute のエイリアス
- maxdb_fetch_array — 結果の行を連想配列、数値添字配列あるいはその両方で取得する
- maxdb_fetch_assoc — 結果の行を連想配列として取得する
- maxdb_fetch_field_direct — 単一のフィールドのメタデータを取得する
- maxdb_fetch_field — 結果セットの次のフィールドを返す
- maxdb_fetch_fields — 結果セット内のフィールドを表すリソースの配列を返す
- maxdb_fetch_lengths — 結果セットの現在の行のカラムの長さを返す
- maxdb_fetch_object — 結果セットの現在の行をオブジェクトとして返す
- maxdb_fetch_row — 結果の行を数値添字の配列として取得する
- maxdb_fetch — maxdb_stmt_fetch のエイリアス
- maxdb_field_count — 直近のクエリのカラム数を返す
- maxdb_field_seek — 結果ポインタを、指定したフィールドオフセットに移動する
- maxdb_field_tell — 結果ポインタの現在のフィールドオフセットを取得する
- maxdb_free_result — 結果に関連付けられたメモリを開放する
- maxdb_get_client_info — MaxDB クライアントのバージョンを文字列で返す
- maxdb_get_client_version — MaxDB クライアントの情報を取得する
- maxdb_get_host_info — 使用している接続の型を表す文字列を返す
- maxdb_get_metadata — maxdb_stmt_result_metadata のエイリアス
- maxdb_get_proto_info — 使用している MaxDB プロトコルのバージョンを返す
- maxdb_get_server_info — MaxDB サーバのバージョンを返す
- maxdb_get_server_version — MaxDB サーバのバージョンを整数値で返す
- maxdb_info — 直近に実行したクエリについての情報を取得する
- maxdb_init — MaxDB を初期化し、maxdb_real_connect で使用するリソースを返す
- maxdb_insert_id — 直近のクエリで使用した、自動生成 ID を返す
- maxdb_kill — MaxDB サーバから切断する
- maxdb_master_query — マスタ/スレーブ構成において、クエリをマスタ側で実行することを強制する
- maxdb_more_results — 複数クエリの結果の中に結果セットがまだあるかどうかを調べる
- maxdb_multi_query — データベース上でクエリを実行する
- maxdb_next_result — multi_query の、次の結果を準備する
- maxdb_num_fields — 結果のフィールド数を取得する
- maxdb_num_rows — 結果の行数を取得する
- maxdb_options — オプションを設定する
- maxdb_param_count — maxdb_stmt_param_count のエイリアス
- maxdb_ping — サーバとの接続を確認し、接続が確立されていない場合は再接続を試みる
- maxdb_prepare — 後で実行するための SQL 文を準備する
- maxdb_query — データベース上でクエリを実行する
- maxdb_real_connect — MaxDB サーバへの接続をオープンする
- maxdb_real_escape_string — 現在の接続の文字セットを考慮したうえで、 SQL 文で使用される文字列中の特殊文字をエスケープする
- maxdb_real_query — SQL クエリを実行する
- maxdb_report — 内部のレポート関数を有効あるいは無効にする
- maxdb_rollback — 現在のトランザクションをロールバックする
- maxdb_rpl_parse_enabled — RPL のパースが有効かどうかを調べる
- maxdb_rpl_probe — RPL を調べる
- maxdb_rpl_query_type — RPL クエリ型を返す
- maxdb_select_db — データベースクエリ用のデフォルトデータベースを選択する
- maxdb_send_long_data — maxdb_stmt_send_long_data のエイリアス
- maxdb_send_query — クエリを送信する
- maxdb_server_end — 埋め込みサーバをシャットダウンする
- maxdb_server_init — 埋め込みサーバを初期化する
- maxdb_set_opt — maxdb_options のエイリアス
- maxdb_sqlstate — 直近の MaxDB 操作の SQLSTATE エラーを返します
- maxdb_ssl_set — SSL を使用したセキュアな接続を確立するために使用する
- maxdb_stat — 現在のシステム状態を取得する
- maxdb_stmt_affected_rows — 直近のステートメントによって変更、削除あるいは挿入された行の数を返す
- maxdb_stmt_bind_param — プリペアドステートメントに、変数をパラメータとしてバインドする
- maxdb_stmt_bind_result — 結果を保存するために、変数をプリペアドステートメントにバインドする
- maxdb_stmt_close_long_data — maxdb_stmt_send_long_data のシーケンスを終了する
- maxdb_stmt_close — プリペアドステートメントを閉じる
- maxdb_stmt_data_seek — ステートメントの結果セットの、任意の行に移動する
- maxdb_stmt_errno — 直近のステートメントコール時のエラーコードを返す
- maxdb_stmt_error — 直近のステートメントコール時のエラー文字列を返す
- maxdb_stmt_execute — プリペアドクエリを実行する
- maxdb_stmt_fetch — プリペアドステートメントの結果を取得し、バインド変数に格納する
- maxdb_stmt_free_result — 指定したステートメントハンドルの結果を保存しているメモリを開放する
- maxdb_stmt_init — ステートメントを初期化し、maxdb_stmt_prepare で使用するリソースを返す
- maxdb_stmt_num_rows — ステートメントの結果セットの行数を返す
- maxdb_stmt_param_count — 指定したステートメントのパラメータ数を返す
- maxdb_stmt_prepare — 後で実行するための SQL 文を準備する
- maxdb_stmt_reset — プリペアドステートメントをリセットする
- maxdb_stmt_result_metadata — プリペアドステートメントから、結果セットのメタデータを返す
- maxdb_stmt_send_long_data — データを複数ブロックで送信する
- maxdb_stmt_sqlstate — 事前のステートメントの捜査からの SQLSTATE エラーを返す
- maxdb_stmt_store_result — プリペアドステートメントから結果を転送する
- maxdb_store_result — 直近のクエリから結果セットを転送する
- maxdb_thread_id — 現在の接続のスレッド ID を返す
- maxdb_thread_safe — スレッドセーフであるかどうかを返す
- maxdb_use_result — 結果セットの取得を開始する
- maxdb_warning_count — 指定したリンクの直近のクエリで発生した警告の数を返す