以下の関数を利用可能とするには、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); ?>
|
|