LXV. MySQL関数

導入

以下の関数は、MySQLデータベースサーバーへのアクセスを可能にします。 MySQLに関するより詳細な情報は、 http://www.mysql.com/にあります。

MySQL のドキュメントは、http://dev.mysql.com/doc/にあります。

要件

以下の関数を利用可能とするには、MySQLサポートを指定してPHPをコン パイルする必要があります。

インストール手順

configureオプション--with-mysql[=DIR]を 使用することにより、PHPからMySQLデータベースへのアクセス が可能となります。

PHP 4では、オプション --with-mysqlはデフォルトで有効と なっています。この動作を無効にするには、configureオプション --without-mysqlを使用する必要が あるでしょう。また、PHP 4でMySQLインストールDIRへのパスを指定しなかった 場合、PHPはバンドルされたMySQLクライアントライブラリを 使用します。 Windowsでは、DLLは附属せず、PHP 4に組込まれています。 (auth-mysqlのような)MySQLを使用する他のアプリケーショを実行するユーザは、 バンドルされたライブラリを使うべきではなく、むしろ、 --with-mysql=/path/to/mysql のようにMySQLのインストールディレクトリを指定するべきです。 これにより、PHPがMySQLによりインストールされた クライアントライブラリを使用するようになり、衝突が回避されます。

PHP 5では、MySQLはもはやデフォルトでは有効とならず、PHPにMySQLライブラリも 付属しません。 この理由の詳細については、 FAQ を参照して下さい。

このMySQL拡張モジュールは、4.1.0以降のMySQLのバージョンでは動作しません。 これ以降については、MySQLiを使用して 下さい。

警告

この拡張モジュールとrecode拡張モジュールを同時にロードした場合、 PHPのクラッシュと起動に関する問題が発生する可能性があります。 より詳細な情報については、 recode拡張モジュールを参照して下さい。

注意: latin (デフォルト)以外の文字セットを必要とする場合、 使用する文字セットのサポートを有効にしてコンパイルした(バンドル版でない) libmysqlをインストールする必要があります。

実行用の設定

これらの関数の動作は、php.iniの設定により変化します。

表 1. MySQL設定オプション

名前デフォルト変更の可否
mysql.allow_persistent"On"PHP_INI_SYSTEM
mysql.max_persistent"-1"PHP_INI_SYSTEM
mysql.max_links"-1"PHP_INI_SYSTEM
mysql.default_portNULLPHP_INI_ALL
mysql.default_socketNULLPHP_INI_ALL
mysql.default_hostNULLPHP_INI_ALL
mysql.default_userNULLPHP_INI_ALL
mysql.default_passwordNULLPHP_INI_ALL
mysql.connect_timeout"0"PHP_INI_SYSTEM
PHP_INI_* 定数の詳細と定義については、 ini_set()を参照して下さい。

以下に設定ディレクティブの簡単な説明を示します。

mysql.allow_persistent boolean

MySQLへの 持続的接続 を可能にするかどうか。

mysql.max_persistent integer

プロセス毎の持続的MySQL接続の最大数。

mysql.max_links integer

持続的接続を含むプロセス毎のMySQL接続の最大数。

mysql.default_port string

他のポートが指定されない場合、データベースサーバ接続時に使用され るデフォルトのTCPポート番号。デフォルトが指定されない場合、ポー トは、環境変数MYSQL_TCP_PORT/etc/servicesmysql-tcpエントリ、コンパイル時の MYSQL_PORT定数の順番で取得されます。 Win32では、MYSQL_PORT定数のみが使用されます。

mysql.default_socket string

他にソケット名が指定されない場合、ローカルなデータベースサーバに 接続する時のデフォルトのソケット名。

mysql.default_host string

他のサーバ名が指定されない場合に、データベースサーバへの接続時 に使用されるデフォルトのサーバ名。 safe modeでは適用されません。

mysql.default_user string

他のユーザ名が指定されない場合に、データベースサーバへの接続時 に使用されるデフォルトのユーザ名。 safe modeでは適用されません。

mysql.default_password string

他のパスワードが指定されない場合に、データベースサーバへの接続時 に使用されるデフォルトのパスワード。 safe modeでは適用されません。

mysql.connect_timeout integer

接続の有効時間(単位:秒)。Linuxでは、この有効時間はサーバからの最 初の応答の待ち時間としても使用されます。

リソース型

MySQLモジュールでは、2種類のリソース型が使用されています。 最初のリソースはデータベース接続のリンクIDで、2番目のリソースは、 クエリ結果を保持するリソースです。

定義済みの定数

これらの定数は、この拡張モジュールで定義されており、 この拡張モジュールがPHP内部にコンパイルされているか実行時に動的にロー ドされるかのどちらかの場合のみ使用可能です。

Since PHP 4.3.0 it is possible to specify additional client flags for the mysql_connect() and mysql_pconnect() functions. The following constants are defined:

表 2. MySQL client constants

ConstantDescription
MYSQL_CLIENT_COMPRESSUse compression protocol
MYSQL_CLIENT_IGNORE_SPACEAllow space after function names
MYSQL_CLIENT_INTERACTIVEAllow interactive_timeout seconds (instead of wait_timeout) of inactivity before closing the connection.

The function mysql_fetch_array() uses a constant for the different types of result arrays. The following constants are defined:

表 3. MySQL fetch constants

ConstantDescription
MYSQL_ASSOC Columns are returned into the array having the fieldname as the array index.
MYSQL_BOTH Columns are returned into the array having both a numerical index and the fieldname as the array index.
MYSQL_NUM Columns are returned into the array having a numerical index to the fields. This index starts with 0, the first field in the result.

以下は、MySQLデータベースに接続し、クエリを実行し、結果レコードを 出力、接続を断する例です。

例 1. MySQL拡張モジュールに関する例

<?php
// データベースに接続し、選択する
$link = mysql_connect("mysql_host", "mysql_login", "mysql_password")
    or die(
"Could not connect");
print
"Connected successfully";
mysql_select_db("my_database")
    or die(
"Could not select database");

// SQLクエリを実行する
$query = "SELECT * FROM my_table";
$result = mysql_query($query)
    or die(
"Query failed");

// HTMLに結果を出力する
print "<table>\n";
while (
$line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    print
"\t<tr>\n";
    foreach (
$line as $col_value) {
        print
"\t\t<td>$col_value</td>\n";
    }
    print
"\t</tr>\n";
}
print
"</table>\n";

// 接続を閉じる
mysql_close($link);
?>

目次
mysql_affected_rows -- 一番最近のクエリーで変更された行の数を得る
mysql_change_user --  アクティブな接続でログイン中のユーザーを変更する
mysql_client_encoding -- Returns the name of the character set
mysql_close -- MySQL接続を閉じる
mysql_connect -- MySQLサーバーへの接続をオープンする
mysql_create_db -- MySQLデータベースを作成する
mysql_data_seek -- 内部的な結果ポインタを移動する
mysql_db_name -- データベース名を得る
mysql_db_query -- MySQLクエリーを送信する
mysql_drop_db -- MySQLデータベースを破棄(削除)する
mysql_errno --  直近のMySQL処理からエラーメッセージのエラー番号を返す
mysql_error --  直近に実行されたMySQLコールのエラーメッセージを返す
mysql_escape_string --  mysql_queryで使用するために文字列をエスケープする
mysql_fetch_array --  連想配列、添字配列、またはその両方として結果の行を取得する
mysql_fetch_assoc --  連想配列として結果の行を取得する
mysql_fetch_field --  結果からカラム情報を取得し、オブジェクトとして返す
mysql_fetch_lengths --  結果における各出力の長さを得る
mysql_fetch_object -- 結果の行をオブジェクトとして取得する
mysql_fetch_row -- 結果を添字配列として取得する
mysql_field_flags --  結果において指定したフィールドのフラグを得る
mysql_field_len --  指定したフィールドの長さを得る
mysql_field_name -- 結果において指定したフィールド名を得る
mysql_field_seek --  結果ポインタを指定したフィールドオフセットにセットする
mysql_field_table --  指定したフィールドが含まれるテーブルの名前を得る
mysql_field_type --  結果において指定したフィールドの型を得る
mysql_free_result -- 結果保持用メモリを開放する
mysql_get_client_info -- MySQLクライアント情報を得る
mysql_get_host_info -- MySQLホスト情報を得る
mysql_get_proto_info -- MySQLプロトコル情報を得る
mysql_get_server_info -- MySQLサーバ情報を得る
mysql_info --  Get information about the most recent query
mysql_insert_id -- 直近のINSERTで生成されたIDを得る
mysql_list_dbs --  MySQLサーバー上で利用可能なデータベースのリストを得る
mysql_list_fields -- MySQL結果フィールドのリストを得る
mysql_list_processes -- List MySQL processes
mysql_list_tables -- MySQL データベース上のテーブルのリストを得る
mysql_num_fields -- 結果におけるフィールドの数を得る
mysql_num_rows -- 結果における行の数を得る
mysql_pconnect --  MySQLサーバーへの持続的な接続をオープンする
mysql_ping -- Ping a server connection or reconnect if there is no connection
mysql_query -- SQLクエリーをMySQLに送信する
mysql_real_escape_string --  Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection.
mysql_result -- 結果データを得る
mysql_select_db -- MySQL データベースを選択する
mysql_stat -- Get current system status
mysql_tablename -- フィールドのテーブル名を得る
mysql_thread_id -- Return the current thread ID
mysql_unbuffered_query --  Send an SQL query to MySQL, without fetching and buffering the result rows