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

# XCII. MySQL 関数 (PDO_MYSQL)

# 導入

PDO_MYSQL は、PHP から MySQL 3.x および 4.x データベースへのアクセスを可能にするための PHP Data Objects (PDO) インターフェース を実装したドライバです。

PDO_MYSQL は、MySQL 4.1 以降に存在するプリペアドステートメントを ネイティブにサポートしているという利点があります。 古いバージョンの mysql クライアントライブラリを使用している場合は、 PDO がこの機能をエミュレートします。

警告
注意: MySQL のテーブル型 (ストレージエンジン) の中には、 トランザクションをサポートしていないものがあります。 トランザクションをサポートしていないテーブル型を使用して トランザクションを使用するコードを書くと、 MySQL はトランザクションが正常に使用できたかのように振舞います。 さらに、DDL クエリを実行する際には、 実行中のトランザクションが暗黙的にコミットされます。

# 定義済み定数

このドライバでは以下の定数が定義されて います。これは拡張モジュールが PHP に組み込まれているか、実行時に動的にロード されている場合のみ使用可能です。さらに、これらのドライバ固有の定数は そのドライバを使用している場合にのみ使用されます。 postgres ドライバで mysql 固有の属性を使用すると、予期せぬ結果を引き起こします。 もし複数のドライバを使用しているコードを実行している場合、 PDO::getAttribute() で `PDO_ATTR_DRIVER_NAME` 属性を使用することで、使用中のドライバ名を調べることが可能です。

`PDO::MYSQL_ATTR_USE_BUFFERED_QUERY` (integer)

  PDOStatement でこの属性を `TRUE` に設定すると、 MySQL ドライバはバッファ版の MySQL API を使用します。 移植性の高いコードを書くには、代わりに PDOStatement::fetchAll() を使用すべきです。

  例 1. mysql でクエリのバッファリングを強制する
  `<?php if ($db->getAttribute(PDO::ATTR_DRIVERNAME) == 'mysql') { $stmt = $db->prepare('select * from foo', array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true)); } else { die("このアプリケーションは mysql でしか動作しません。代わりに \$stmt->fetchAll() を使用すべきです"); } ?>`

`PDO::MYSQL_ATTR_LOCAL_INFILE` (integer)

  LOAD LOCAL INFILE を有効にします。

`PDO::MYSQL_ATTR_INIT_COMMAND` (integer)

  MySQL サーバへの接続時に実行するコマンドを指定します。 再接続の際には自動的に再実行されます。

`PDO::MYSQL_ATTR_READ_DEFAULT_FILE` (integer)

  `my.cnf` ではなく、 指定した名前のファイルからオプションを読み込みます。

`PDO::MYSQL_ATTR_READ_DEFAULT_GROUP` (integer)

  `my.cnf` あるいは 別のファイル (`MYSQL_READ_DEFAULT_FILE` で指定したもの) の中の、指定した名前のグループからオプションを読み込みます。

`PDO::MYSQL_ATTR_MAX_BUFFER_SIZE` (integer)

  バッファの最大サイズ。デフォルトは 1 MiB です。

`PDO::MYSQL_ATTR_DIRECT_QUERY` (integer)

  プリペアドステートメントではなく、直接クエリを実行します。

前のページ | ホーム | 次のページ
mysql_unbuffered_query | 上に戻る | PDO_MYSQL DSN