PHP マニュアル
前のページ |  | 次のページ

# 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_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_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/services`の `mysql-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

Constant | Description
--- | ---
MYSQL_CLIENT_COMPRESS | Use compression protocol
MYSQL_CLIENT_IGNORE_SPACE | Allow space after function names
MYSQL_CLIENT_INTERACTIVE | Allow 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

Constant | Description
--- | ---
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);
?>`

前のページ | ホーム | 次のページ
msql | 上に戻る | mysql_affected_rows