diff --git a/appendices/migration84/new-features.xml b/appendices/migration84/new-features.xml index b64e988a331..2e20bfaf1dc 100644 --- a/appendices/migration84/new-features.xml +++ b/appendices/migration84/new-features.xml @@ -375,7 +375,7 @@ $object = $reflector->newLazyGhost($initializer); シングルクオートやダブルクオートで囲まれたリテラルでのクオートの二重化によるエスケープ - 2 つのハイフンとネストされていない C スタイルのコメント + 2 つのハイフンによるコメント、ネストされていない C 言語形式のコメント @@ -396,7 +396,7 @@ $object = $reflector->newLazyGhost($initializer); バッククオートで囲まれたリテラルでのクオートの二重化によるエスケープ - 1 つの空白が続く 2 つのハイフン、ネストされていない C スタイルのコメント、 + 2 つのハイフンによるコメント、C 言語形式のコメント、 # によるコメント @@ -414,13 +414,13 @@ $object = $reflector->newLazyGhost($initializer); シングルクオートやダブルクオートで囲まれたリテラルでのクオートの二重化によるエスケープ - C スタイルの「エスケープ」文字列リテラル (E'string') + C 言語形式の「エスケープ」文字列リテラル (E'string') ドル記号で囲まれた文字列リテラル - 2 つのハイフンとネストされていない C スタイルのコメント + 2 つのハイフンによるコメント、ネストされていない C 言語形式のコメント ? 演算子のエスケープシーケンスとしての ?? のサポート @@ -444,7 +444,7 @@ $object = $reflector->newLazyGhost($initializer); 識別子の角括弧によるクオート - 2 つのハイフンとネストされていない C スタイルのコメント + 2 つのハイフンとネストされていない C 言語形式のコメント diff --git a/reference/pdo/pdo/connect.xml b/reference/pdo/pdo/connect.xml new file mode 100644 index 00000000000..42be67ddaad --- /dev/null +++ b/reference/pdo/pdo/connect.xml @@ -0,0 +1,77 @@ + + + + + + + PDO::connect + データベースに接続しドライバが対応する PDO サブクラスを返す + + + + &reftitle.description; + + public static staticPDO::connect + stringdsn + stringnullusername&null; + #[\SensitiveParameter]stringnullpassword&null; + arraynulloptions&null; + + + 接続するデータベースに対応する PDO サブクラスが + 存在する場合そのインスタンスを、 + 存在しない場合は汎用的な PDO インスタンスを作成します。 + + + + + + + + + &reftitle.returnvalues; + + 接続するデータベースに対応する PDO サブクラスが + 存在する場合そのインスタンス、 + または汎用的な PDO インスタンスを返します。 + + + + + + + + + &reftitle.seealso; + + Pdo\Dblib + Pdo\Firebird + Pdo\Mysql + Pdo\Odbc + Pdo\Pgsql + Pdo\Sqlite + PDO::__construct + + + + + diff --git a/reference/pdo/pdo/construct.xml b/reference/pdo/pdo/construct.xml index 46f475ab403..09eb6bb6c5a 100644 --- a/reference/pdo/pdo/construct.xml +++ b/reference/pdo/pdo/construct.xml @@ -1,6 +1,6 @@ - + @@ -112,7 +112,6 @@ &reftitle.errors; - PDO::__construct は、 指定されたデータベースへの接続に失敗した場合、 PDO::ATTR_ERRMODE が設定されているかどうかに関わらず、 PDOException をスローします。 @@ -193,7 +192,6 @@ $dbh = new PDO($dsn, $user, $password); - - diff --git a/reference/pdo_dblib/pdo-dblib.xml b/reference/pdo_dblib/pdo-dblib.xml new file mode 100644 index 00000000000..fa41b1e658c --- /dev/null +++ b/reference/pdo_dblib/pdo-dblib.xml @@ -0,0 +1,166 @@ + + + + + + Pdo\Dblib クラス + Pdo\Dblib + + + + +
+ &reftitle.intro; + + DBLib PDO ドライバによる接続を示す PDO サブクラスです。 + +
+ + +
+ &reftitle.classsynopsis; + + + + Pdo\Dblib + + + extends + PDO + + &InheritedConstants; + + + + &Constants; + + public + const + int + Pdo\Dblib::ATTR_CONNECTION_TIMEOUT + + + public + const + int + Pdo\Dblib::ATTR_QUERY_TIMEOUT + + + public + const + int + Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER + + + public + const + int + Pdo\Dblib::ATTR_VERSION + + + public + const + int + Pdo\Dblib::ATTR_TDS_VERSION + + + public + const + int + Pdo\Dblib::ATTR_SKIP_EMPTY_ROWSETS + + + public + const + int + Pdo\Dblib::ATTR_DATETIME_CONVERT + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.constants; + + + Pdo\Dblib::ATTR_CONNECTION_TIMEOUT + + + + + + + Pdo\Dblib::ATTR_QUERY_TIMEOUT + + + + + + + Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER + + + + + + + Pdo\Dblib::ATTR_VERSION + + + + + + + Pdo\Dblib::ATTR_TDS_VERSION + + + + + + + Pdo\Dblib::ATTR_SKIP_EMPTY_ROWSETS + + + + + + + Pdo\Dblib::ATTR_DATETIME_CONVERT + + + + + + +
+
+ +
+ diff --git a/reference/pdo_firebird/constants.xml b/reference/pdo_firebird/constants.xml index fee51f43319..65d984f4406 100644 --- a/reference/pdo_firebird/constants.xml +++ b/reference/pdo_firebird/constants.xml @@ -11,7 +11,7 @@ - Pdo\Firebird::ATTR_DATE_FORMAT &Alias;。 + Pdo\Firebird::ATTR_DATE_FORMAT &Alias; @@ -22,7 +22,7 @@ - Pdo\Firebird::ATTR_DATE_FORMAT &Alias;。 + Pdo\Firebird::ATTR_TIME_FORMAT &Alias; @@ -33,7 +33,7 @@ - Pdo\Firebird::ATTR_TIMESTAMP_FORMAT &Alias;。 + Pdo\Firebird::ATTR_TIMESTAMP_FORMAT &Alias; diff --git a/reference/pdo_firebird/pdo-firebird.xml b/reference/pdo_firebird/pdo-firebird.xml new file mode 100644 index 00000000000..6cceeb0700a --- /dev/null +++ b/reference/pdo_firebird/pdo-firebird.xml @@ -0,0 +1,209 @@ + + + + + + Pdo\Firebird クラス + Pdo\Firebird + + + + +
+ &reftitle.intro; + + Firebird PDO ドライバによる接続を示す PDO サブクラスです。 + +
+ + +
+ &reftitle.classsynopsis; + + + + Pdo\Firebird + + + + extends + PDO + + + &InheritedConstants; + + + + + &Constants; + + public + const + int + Pdo\Firebird::ATTR_DATE_FORMAT + + + public + const + int + Pdo\Firebird::ATTR_TIME_FORMAT + + + public + const + int + Pdo\Firebird::ATTR_TIMESTAMP_FORMAT + + + public + const + int + Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL + + + public + const + int + Pdo\Firebird::READ_COMMITTED + + + public + const + int + Pdo\Firebird::REPEATABLE_READ + + + public + const + int + Pdo\Firebird::SERIALIZABLE + + + public + const + int + Pdo\Firebird::WRITABLE_TRANSACTION + + + &Methods; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.constants; + + + Pdo\Firebird::ATTR_DATE_FORMAT + + + 日付フォーマットを設定します。 + + + + + Pdo\Firebird::ATTR_TIME_FORMAT + + + 時刻フォーマットを設定します。 + + + + + Pdo\Firebird::ATTR_TIMESTAMP_FORMAT + + + タイムスタンプフォーマットを設定します。 + + + + + Pdo\Firebird::TRANSACTION_ISOLATION_LEVEL + + + トランザクション分離レベルを設定します。 + Pdo\Firebird::READ_COMMITTED、 + Pdo\Firebird::REPEATABLE_READ、 + または Pdo\Firebird::SERIALIZABLE のいずれかです。 + + + + + Pdo\Firebird::READ_COMMITTED + + + ANSI トランザクション分離レベルが + Read Committed であることを示すフラグです。 + これがデフォルトの動作です。 + + + + + Pdo\Firebird::REPEATABLE_READ + + + ANSI トランザクション分離レベルが + Repeatable Read であることを示すフラグです。 + Firebird の "snapshot" 分離レベルに相当します。 + + + + + Pdo\Firebird::SERIALIZABLE + + + ANSI トランザクション分離レベルが + Serializeable であることを示すフラグです。 + Firebird の "snapshot table stability" 分離レベルに相当します。 + + + + + Pdo\Firebird::WRITABLE_TRANSACTION + + + ブール値で、トランザクションアクセスモードを + READ ONLY または READ WRITE に設定します。 + デフォルトは &true; で、READ WRITE を表します。 + + + + +
+
+ + &reference.pdo-firebird.pdo.entities.firebird; + +
+ diff --git a/reference/pdo_firebird/pdo/firebird/getapiversion.xml b/reference/pdo_firebird/pdo/firebird/getapiversion.xml new file mode 100644 index 00000000000..8b4c86243ce --- /dev/null +++ b/reference/pdo_firebird/pdo/firebird/getapiversion.xml @@ -0,0 +1,54 @@ + + + + + + + Pdo\Firebird::getApiVersion + APIバージョンを取得する + + + + &reftitle.description; + + public static intPdo\Firebird::getApiVersion + + + + ibase.h 内で C 言語の定数 FB_API_VER として定義されている + Firebird API のバージョンを返します。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + FireBird API のバージョンを int 型で返します。 + + + + diff --git a/reference/pdo_mysql/configure.xml b/reference/pdo_mysql/configure.xml index d6652db8d3f..6a69824529a 100644 --- a/reference/pdo_mysql/configure.xml +++ b/reference/pdo_mysql/configure.xml @@ -1,6 +1,6 @@ - +
&reftitle.install; @@ -50,9 +50,10 @@ $ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock - SSL サポートを有効にするには、適切な PDO_MySQL 定数 + SSL サポートを有効にするには、適切な + Pdo\Mysql::ATTR_SSL_* を指定します。これは MySQL C API 関数 mysql_ssl_set() - をコールするのと同じ意味になります。また、SSL を PDO::setAttribute + をコールするのと同じ意味になります。また、SSL を PDO::setAttribute で有効にすることはできません。というのも、この時点ではすでに接続が確立されてしまっているからです。 MySQL のドキュメントで SSL を使った MySQL への接続 について確認しましょう。 diff --git a/reference/pdo_mysql/constants.xml b/reference/pdo_mysql/constants.xml index 5bbe515544c..e311bfa82e9 100644 --- a/reference/pdo_mysql/constants.xml +++ b/reference/pdo_mysql/constants.xml @@ -1,41 +1,20 @@ - + -
+
&reftitle.constants; &pdo.driver-constants; PDO::MYSQL_ATTR_USE_BUFFERED_QUERY - (bool) + (int) - デフォルトでは、全てのステートメントが - バッファモード. - で実行されます。 - この値を &false; に設定すると、 - PDO オブジェクトの場合、 - MySQL ドライバは非バッファモードを使います。 + Pdo\Mysql::ATTR_USE_BUFFERED_QUERY &Alias; - - MySQL の非バッファモードを使う - -setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); -$unbufferedResult = $pdo->query("SELECT Name FROM City"); -foreach ($unbufferedResult as $row) { - echo $row['Name'] . PHP_EOL; -} -?> -]]> - - - @@ -44,46 +23,32 @@ foreach ($unbufferedResult as $row) { (int) - - LOAD LOCAL INFILE を有効にします。 - - - この定数を使うのは、新しいデータベースハンドルを作るときの - driver_options 配列内だけであることに注意しましょう。 - + + Pdo\Mysql::ATTR_LOCAL_INFILE &Alias; + PDO::MYSQL_ATTR_LOCAL_INFILE_DIRECTORY - (string) + (int) - - LOCAL DATA 文によるファイルのロードを、 - ここで指定したディレクトリに制限する機能を有効にします。 + + Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY &Alias; PHP 8.1.0 以降で利用可能です。 - - - この定数を使うのは、新しいデータベースハンドルを作るときの - driver_options 配列内だけであることに注意しましょう。 - + PDO::MYSQL_ATTR_INIT_COMMAND - (string) + (int) - - MySQL サーバーへの接続時に実行するコマンドを指定します。 - 再接続の際には自動的に再実行されます。 - - - この定数を使うのは、新しいデータベースハンドルを作るときの - driver_options 配列内だけであることに注意しましょう。 - + + Pdo\Mysql::ATTR_INIT_COMMAND &Alias; + @@ -92,12 +57,9 @@ foreach ($unbufferedResult as $row) { (int) - - my.cnf ではなく、 - 指定した名前のファイルからオプションを読み込みます。 - このオプションは、mysqlnd を使っている場合は利用できません。 - mysqlnd は mysql の設定ファイルを読んでいないからです。 - + + Pdo\Mysql::ATTR_READ_DEFAULT_FILE &Alias; + @@ -106,13 +68,9 @@ foreach ($unbufferedResult as $row) { (int) - - my.cnf あるいは - 別のファイル (MYSQL_READ_DEFAULT_FILE - で指定したもの) の中の、指定した名前のグループからオプションを読み込みます。 - このオプションは、mysqlnd を使っている場合は利用できません。 - mysqlnd は mysql の設定ファイルを読んでいないからです。 - + + Pdo\Mysql::ATTR_READ_DEFAULT_GROUP &Alias; + @@ -121,10 +79,9 @@ foreach ($unbufferedResult as $row) { (int) - - バッファの最大サイズ。デフォルトは 1 MiB です。 - mysqlnd を指定してコンパイルした場合は、この定数はサポートされていません。 - + + Pdo\Mysql::ATTR_MAX_BUFFER_SIZE &Alias; + @@ -133,9 +90,9 @@ foreach ($unbufferedResult as $row) { (int) - - プリペアドステートメントではなく、直接クエリを実行します。 - + + PDO::ATTR_EMULATE_PREPARES &Alias; + @@ -144,9 +101,9 @@ foreach ($unbufferedResult as $row) { (int) - - 変更された行数ではなく、見つかった (マッチした) 行数を返します。 - + + Pdo\Mysql::ATTR_FOUND_ROWS &Alias; + @@ -155,10 +112,9 @@ foreach ($unbufferedResult as $row) { (int) - - 関数名の後に続く空白を許可します。 - すべての関数名を予約語にします。 - + + Pdo\Mysql::ATTR_IGNORE_SPACE &Alias; + @@ -167,9 +123,21 @@ foreach ($unbufferedResult as $row) { (int) - - ネットワーク通信の圧縮を有効にします。 - + + Pdo\Mysql::ATTR_COMPRESS &Alias; + + + + + + + PDO::MYSQL_ATTR_SERVER_PUBLIC_KEY + (int) + + + + Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY &Alias; + @@ -179,9 +147,9 @@ foreach ($unbufferedResult as $row) { (int) - - SSL 認証局のファイルパス。 - + + Pdo\Mysql::ATTR_SSL_CA &Alias; + @@ -191,10 +159,9 @@ foreach ($unbufferedResult as $row) { (int) - - 信頼済みのSSL認証局の証明書が入ったディレクトリパス。 - 証明書は、PEM フォーマットで格納されています。 - + + Pdo\Mysql::ATTR_SSL_CAPATH &Alias; + @@ -204,9 +171,9 @@ foreach ($unbufferedResult as $row) { (int) - - SSL 証明書のファイルパス。 - + + Pdo\Mysql::ATTR_SSL_CERT &Alias; + @@ -216,11 +183,9 @@ foreach ($unbufferedResult as $row) { (int) - - SSL 暗号化に使うひとつ以上の暗号の一覧。 - OpenSSL で有効なフォーマットで指定します。 - 例: DHE-RSA-AES256-SHA:AES128-SHA - + + Pdo\Mysql::ATTR_SSL_CIPHER &Alias; + @@ -230,9 +195,9 @@ foreach ($unbufferedResult as $row) { (int) - - SSL キーのファイルパス。 - + + Pdo\Mysql::ATTR_SSL_KEY &Alias; + @@ -242,13 +207,9 @@ foreach ($unbufferedResult as $row) { (int) - - サーバーの SSL 証明書の検証を無効にする方法を提供します。 - このオプションは、mysqlnd でのみ利用可能です。 - - - &version.exists.asof; 7.0.18 および PHP 7.1.4. - + + Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT &Alias; + @@ -258,14 +219,9 @@ foreach ($unbufferedResult as $row) { (int) - - &false; にすると、PDO::prepare - や PDO::query でのマルチクエリの実行を無効にします。 - - - この定数が使えるのは、データベースハンドルを新規作成する際の driver_options - 配列内だけであることに注意しましょう。 - + + Pdo\Mysql::ATTR_MULTI_STATEMENTS &Alias; + diff --git a/reference/pdo_mysql/pdo-mysql.xml b/reference/pdo_mysql/pdo-mysql.xml new file mode 100644 index 00000000000..dd31c61d7bd --- /dev/null +++ b/reference/pdo_mysql/pdo-mysql.xml @@ -0,0 +1,473 @@ + + + + + + Pdo\Mysql クラス + Pdo\Mysql + + + + +
+ &reftitle.intro; + + MySQL PDO ドライバによる接続を示す PDO サブクラスです。 + + + このドライバは MySQL 方言向けに専用の SQL クエリパーサーをサポートしています。 + 次のものを処理可能です: + + + + シングルクオートやダブルクオートで囲まれたリテラルでのクオートの二重化やバックスラッシュによるエスケープ + + + + + バッククオートで囲まれたリテラルでのクオートの二重化によるエスケープ + + + + + 2 つのハイフンによるコメント、C 言語形式のコメント、# によるコメント + + + + +
+ + +
+ &reftitle.classsynopsis; + + + + + Pdo\Mysql + + + + extends + PDO + + + &InheritedConstants; + + + + + &Constants; + + public + const + int + Pdo\Mysql::ATTR_USE_BUFFERED_QUERY + + + public + const + int + Pdo\Mysql::ATTR_LOCAL_INFILE + + + public + const + int + Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY + + + public + const + int + Pdo\Mysql::ATTR_INIT_COMMAND + + + public + const + int + Pdo\Mysql::ATTR_MAX_BUFFER_SIZE + + + public + const + int + Pdo\Mysql::ATTR_READ_DEFAULT_FILE + + + public + const + int + Pdo\Mysql::ATTR_READ_DEFAULT_GROUP + + + public + const + int + Pdo\Mysql::ATTR_COMPRESS + + + public + const + int + Pdo\Mysql::ATTR_DIRECT_QUERY + + + public + const + int + Pdo\Mysql::ATTR_FOUND_ROWS + + + public + const + int + Pdo\Mysql::ATTR_IGNORE_SPACE + + + public + const + int + Pdo\Mysql::ATTR_MULTI_STATEMENTS + + + public + const + int + Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY + + + public + const + int + Pdo\Mysql::ATTR_SSL_KEY + + + public + const + int + Pdo\Mysql::ATTR_SSL_CERT + + + public + const + int + Pdo\Mysql::ATTR_SSL_CA + + + public + const + int + Pdo\Mysql::ATTR_SSL_CAPATH + + + public + const + int + Pdo\Mysql::ATTR_SSL_CIPHER + + + public + const + int + Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT + + + &Methods; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.constants; + + + Pdo\Mysql::ATTR_USE_BUFFERED_QUERY + + + デフォルトでは、全てのステートメントが + バッファモード + で実行されます。 + この値を &false; に設定すると、 + Pdo\Mysql オブジェクトの + MySQL ドライバは非バッファモードを使います。 + + MySQL の非バッファモードを使う + +setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); + +$unbufferedResult = $pdo->query("SELECT Name FROM City"); +foreach ($unbufferedResult as $row) { + echo $row['Name'] . PHP_EOL; +} +?> +]]> + + + + + + Pdo\Mysql::ATTR_LOCAL_INFILE + + + LOAD LOCAL INFILE を有効にします。 + + + + この定数を使えるのは、新しいデータベースハンドルを作るときの + driver_options 配列内に限ります。 + + + + + + Pdo\Mysql::ATTR_LOCAL_INFILE_DIRECTORY + + + LOCAL DATA 文によるファイルのロードを、 + ここで指定したディレクトリのみに制限します。 + PHP 8.1.0 以降で利用可能です。 + + + + + + + + Pdo\Mysql::ATTR_INIT_COMMAND + + + MySQL サーバーへの接続時に実行するコマンドを指定します。 + 再接続の際には自動的に再実行されます。 + + + + + + + + Pdo\Mysql::ATTR_READ_DEFAULT_FILE + + + my.cnf ではなく、 + 指定した名前のファイルからオプションを読み込みます。 + + + + このオプションは、mysqlnd を使っている場合は利用できません。 + mysqlnd は mysql の設定ファイルを読んでいないからです。 + + + + + + Pdo\Mysql::ATTR_READ_DEFAULT_GROUP + + + my.cnf あるいは + 別のファイル (Pdo\Mysql::ATTR_READ_DEFAULT_FILE + で指定したもの) の中の、指定した名前のグループからオプションを読み込みます。 + + + + このオプションは、mysqlnd を使っている場合は利用できません。 + mysqlnd は mysql の設定ファイルを読んでいないからです。 + + + + + + Pdo\Mysql::ATTR_COMPRESS + + + ネットワーク通信の圧縮を有効にします。 + + + + + Pdo\Mysql::ATTR_DIRECT_QUERY + + + PDO::ATTR_EMULATE_PREPARES &Alias; + + + + + Pdo\Mysql::ATTR_FOUND_ROWS + + + 変更された行数ではなく、 + 見つかった (マッチした) 行数を返します。 + + + + + + + + Pdo\Mysql::ATTR_IGNORE_SPACE + + + 関数名の後に続く空白を許可します。 + すべての関数名が予約語になります。 + + + + + + + + Pdo\Mysql::ATTR_MAX_BUFFER_SIZE + + + バッファの最大サイズ。デフォルトは 1 MiB です。 + + + + mysqlnd を指定してコンパイルした場合は、この定数はサポートされていません。 + + + + + + Pdo\Mysql::ATTR_MULTI_STATEMENTS + + + &false; にすると、 + PDO::prepareや + PDO::query でのマルチクエリの実行を無効にします。 + + + + + + + + Pdo\Mysql::ATTR_SERVER_PUBLIC_KEY + + + SHA-256 ベースの認証で使用する RSA 公開鍵ファイル。 + + + + + + + + Pdo\Mysql::ATTR_SSL_KEY + + + SSL キーのファイルパス。 + + + + + + + + Pdo\Mysql::ATTR_SSL_CERT + + + SSL 証明書のファイルパス。 + + + + + + + + Pdo\Mysql::ATTR_SSL_CA + + + SSL 認証局のファイルパス。 + + + + + + + + Pdo\Mysql::ATTR_SSL_CAPATH + + + 信頼済みの + SSL CA 証明書が入ったディレクトリパス。 + 証明書は、PEM フォーマットで格納されています。 + + + + + + + + Pdo\Mysql::ATTR_SSL_CIPHER + + + SSL 暗号化に使うひとつ以上の暗号の一覧。 + OpenSSL で有効なフォーマットで指定します。 + 例: DHE-RSA-AES256-SHA:AES128-SHA + + + + + + + + Pdo\Mysql::ATTR_SSL_VERIFY_SERVER_CERT + + + サーバーの SSL 証明書の検証を無効にする方法を提供します。 + PHP 7.0.18 および PHP 7.1.4 以降で使用できます。 + + + + このオプションは、mysqlnd でのみ利用可能です。 + + + + + + + + +
+
+ + &reference.pdo-mysql.pdo.entities.mysql; + +
+ diff --git a/reference/pdo_mysql/pdo/mysql/getwarningcount.xml b/reference/pdo_mysql/pdo/mysql/getwarningcount.xml new file mode 100644 index 00000000000..0696ce7a3fe --- /dev/null +++ b/reference/pdo_mysql/pdo/mysql/getwarningcount.xml @@ -0,0 +1,89 @@ + + + + + + + Pdo\Mysql::getWarningCount + 最後に実行したクエリの警告の数を返す + + + + &reftitle.description; + + public intPdo\Mysql::getWarningCount + + + + 最後に実行したクエリの警告の数を返します。 + + + + 警告メッセージを取得するには、次の SQL コマンドを使用できます: + SHOW WARNINGS [limit row_count] + + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 最後に実行したクエリで発生した警告の数を int で返します。 + + + + + &reftitle.examples; + + <methodname>Pdo\Mysql::getWarningCount</methodname> の例 + +query('SELECT 42/0'); +if ($conn->getWarningCount() > 0) { + $result = $conn->query("SHOW WARNINGS"); + $row = $result->fetch(); + printf("%s (%d): %s\n", $row[0], $row[1], $row[2]); +} + +?> +]]> + + &example.outputs; + + + + + + + + diff --git a/reference/pdo_mysql/reference.xml b/reference/pdo_mysql/reference.xml index f539d20e813..9836770135d 100644 --- a/reference/pdo_mysql/reference.xml +++ b/reference/pdo_mysql/reference.xml @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ MySQL (PDO) -
+
&reftitle.intro; PDO_MYSQL は、PHP から MySQL データベースへのアクセスを可能にするための @@ -181,6 +181,7 @@ mysql:unix_socket=/tmp/mysql.sock;dbname=testdb + &reference.pdo-mysql.pdo-mysql; - + -
+
&reftitle.constants; &pdo.driver-constants; @@ -23,32 +23,42 @@ (int) - - このオプションは、ODBC のカーソルライブラリが使うかを制御します。 - ODBC カーソルライブラリは、ドライバが実装していない高度なODBCの機能 - (例: スクロール可能なブロックカーソル) をいくつかサポートします。 - サポートしている値は以下の通りです: - - - - PDO::ODBC_SQL_USE_IF_NEEDED (デフォルト): - ODBC カーソルライブラリを必要な時に使います。 - - - - - PDO::ODBC_SQL_USE_DRIVER: - ODBC カーソルライブラリを使いません。 - - - - - PDO::ODBC_SQL_USE_ODBC: - ODBC カーソルライブラリを常に使います。 - - - - + + Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY &Alias; + + + + + + PDO::ODBC_SQL_USE_IF_NEEDED + (int) + + + + Pdo\Odbc::SQL_USE_IF_NEEDED &Alias; + + + + + + PDO::ODBC_SQL_USE_DRIVER + (int) + + + + Pdo\Odbc::SQL_USE_DRIVER &Alias; + + + + + + PDO::ODBC_SQL_USE_ODBC + (int) + + + + Pdo\Odbc::SQL_USE_ODBC &Alias; + @@ -57,15 +67,9 @@ (bool) - - Windows のみ有効です。 - &true; の場合、UTF-16 でエンコードされた文字データ( - CHAR, - VARCHAR, LONGVARCHAR) を - データベースから読み取ったり、書き込んだりする際に UTF-8 に変換します。 - &false; の場合(デフォルト)、 - エンコーディングの変換はドライバが行う可能性があります。 - + + Pdo\Odbc::ATTR_ASSUME_UTF8 &Alias; + diff --git a/reference/pdo_odbc/pdo-odbc.xml b/reference/pdo_odbc/pdo-odbc.xml new file mode 100644 index 00000000000..8857d4be514 --- /dev/null +++ b/reference/pdo_odbc/pdo-odbc.xml @@ -0,0 +1,161 @@ + + + + + + Pdo\Odbc クラス + Pdo\Odbc + + + + +
+ &reftitle.intro; + + ODBC PDO ドライバによる接続を示す PDO サブクラスです。 + +
+ + +
+ &reftitle.classsynopsis; + + + + + Pdo\Odbc + + + + extends + PDO + + + &InheritedConstants; + + + + + &Constants; + + public + const + int + Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY + + + public + const + int + Pdo\Odbc::ATTR_ASSUME_UTF8 + + + public + const + int + Pdo\Odbc::SQL_USE_IF_NEEDED + + + public + const + int + Pdo\Odbc::SQL_USE_DRIVER + + + public + const + int + Pdo\Odbc::SQL_USE_ODBC + + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.constants; + + + Pdo\Odbc::ATTR_USE_CURSOR_LIBRARY + + + このオプションは、ODBC のカーソルライブラリが使うかを制御します。 + ODBC カーソルライブラリは、ドライバが実装していない高度なODBCの機能 + (例: スクロール可能なブロックカーソル) + をいくつかサポートします。 + サポートしている値は次の通りです: + + + Pdo\Odbc::SQL_USE_IF_NEEDED + + + 必要な場合にのみ ODBC カーソルライブラリを使用します。 + これがデフォルトです。 + + + + + Pdo\Odbc::SQL_USE_DRIVER + + + ODBC カーソルライブラリを使用しません。 + + + + + Pdo\Odbc::SQL_USE_ODBC + + + 常に ODBC カーソルライブラリを使用します。 + + + + + + + + + Pdo\Odbc::ATTR_ASSUME_UTF8 + + + Windows のみ有効です。 + &true; の場合、UTF-16 でエンコードされた文字データ(CHAR, + VARCHAR, LONGVARCHAR) を + データベースから読み取ったり、書き込んだりする際に UTF-8 に変換します。 + &false; の場合(デフォルト)、エンコーディングの変換はドライバが行う可能性があります。 + + + + +
+
+ +
+ diff --git a/reference/pdo_odbc/reference.xml b/reference/pdo_odbc/reference.xml index 35d8b513ba5..0c7d286e45e 100644 --- a/reference/pdo_odbc/reference.xml +++ b/reference/pdo_odbc/reference.xml @@ -1,6 +1,6 @@ - + @@ -9,7 +9,7 @@ ODBC and DB2 (PDO) -
+
&reftitle.intro; PDO_ODBC は PHP @@ -170,6 +170,7 @@ odbc:Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\\db.mdb;Uid=Admin + &reference.pdo-odbc.pdo-odbc; + + + + + Pdo\Pgsql::copyFromArray + PHP の配列から、データをテーブルにコピーする + + + + &reftitle.description; + + public boolPdo\Pgsql::copyFromArray + stringtableName + arrayrows + stringseparator"\t" + stringnullAs"\\\\N" + stringnullfields&null; + + + rows 配列からデータをテーブル + tableName にコピーします。その際、separator を + フィールドのデリミタ、そして fields のリストを使います。 + + + + + &reftitle.parameters; + + + tableName + + + テーブル名を含む文字列 + + + + + rows + + + separator で区切られたフィールドの文字列の配列 + + + + + separator + + + rows 配列の各要素の中で + フィールドを分割するためのデリミタ + + + + + nullAs + + + SQLの NULL 値をどのように扱うかを指定します + + + + + fields + + + 挿入するフィールドの一覧 + + + + + + + + &reftitle.returnvalues; + + &return.success; + + + + + + + + + &reftitle.seealso; + + Pdo\Pgsql::copyToArray + Pdo\Pgsql::copyFromFile + Pdo\Pgsql::copyToFile + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/copyfromfile.xml b/reference/pdo_pgsql/PDO/pgsql/copyfromfile.xml new file mode 100644 index 00000000000..260e02cede4 --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/copyfromfile.xml @@ -0,0 +1,125 @@ + + + + + + + Pdo\Pgsql::copyFromFile + ファイルからデータをテーブルにコピーする + + + + &reftitle.description; + + public boolPdo\Pgsql::copyFromFile + stringtableName + stringfilename + stringseparator"\t" + stringnullAs"\\\\N" + stringnullfields&null; + + + filename で指定されたファイルからデータを + テーブル tableName にコピーします。その際、 + separator をフィールドのデリミタ、そして fields のリストを使います。 + + + + + &reftitle.parameters; + + + + + + filename + + + インポートするデータを含むファイル名 + + + + + + + + + + + + + + + + + &reftitle.returnvalues; + + &return.success; + + + + + + + + + &reftitle.seealso; + + Pdo\Pgsql::copyToFile + Pdo\Pgsql::copyFromArray + Pdo\Pgsql::copyToArray + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/copytoarray.xml b/reference/pdo_pgsql/PDO/pgsql/copytoarray.xml new file mode 100644 index 00000000000..30a74390ad0 --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/copytoarray.xml @@ -0,0 +1,119 @@ + + + + + + + Pdo\Pgsql::copyToArray + データベーステーブルからのデータをPHPの配列にコピーする + + + + &reftitle.description; + + public arrayfalsePdo\Pgsql::copyToArray + stringtableName + stringseparator"\t" + stringnullAs"\\\\N" + stringnullfields&null; + + + tableName のデータを配列にコピーします。その際、separator をフィールドのデリミタ、そして fields のリストを使います。 + + + + + &reftitle.parameters; + + + + + + + + + + + + fields + + + エクスポートするフィールドの一覧 + + + + + + + + &reftitle.returnvalues; + + 行の配列を返します。&return.falseforfailure; + + + + + + + + + &reftitle.seealso; + + Pdo\Pgsql::copyFromArray + Pdo\Pgsql::copyFromFile + Pdo\Pgsql::copyToFile + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/copytofile.xml b/reference/pdo_pgsql/PDO/pgsql/copytofile.xml new file mode 100644 index 00000000000..c09e197b432 --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/copytofile.xml @@ -0,0 +1,139 @@ + + + + + + + Pdo\Pgsql::copyToFile + テーブルのデータをファイルにコピーする + + + + &reftitle.description; + + public boolPdo\Pgsql::copyToFile + stringtableName + stringfilename + stringseparator"\t" + stringnullAs"\\\\N" + stringnullfields&null; + + + filename で指定されたファイルに、テーブルからデータをコピーします。 + その際、separator をフィールドのデリミタ、そして + fields のリストを使います。 + + + + + &reftitle.parameters; + + + + + + filename + + + エキスポートするファイル名 + + + + + + + + + + + fields + + + 挿入するフィールドの一覧 + + + + + + + + &reftitle.returnvalues; + + &return.success; + + + + + + + + + &reftitle.seealso; + + Pdo\Pgsql::copyFromFile + Pdo\Pgsql::copyFromArray + Pdo\Pgsql::copyToArray + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/escapeidentifier.xml b/reference/pdo_pgsql/PDO/pgsql/escapeidentifier.xml new file mode 100644 index 00000000000..8842adec6d0 --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/escapeidentifier.xml @@ -0,0 +1,113 @@ + + + + + + + Pdo\Pgsql::escapeIdentifier + SQL識別子として使用するために文字列をエスケープする + + + + &reftitle.description; + + public stringPdo\Pgsql::escapeIdentifier + stringinput + + + テーブル名、カラム名、または関数名など、SQL の識別子として使用する文字列をエスケープします。 + これは、ユーザーから提供された識別子が特殊文字を含むため、 + SQLパーサーが識別子の一部として解釈できない場合や、 + 大文字を含む識別子でそれを保持したい場合に有用です。 + + + + + &reftitle.parameters; + + + input + + + エスケープ対象の文字列(string) + + + + + + + + &reftitle.returnvalues; + + エスケープされた文字列(string) を返します。 + + + + + &reftitle.examples; + + <methodname>Pdo\Pgsql::escapeIdentifier</methodname> の例 + +exec("CREATE TABLE $unescapedTableName ()"); + +$escapedTableName = $pdo->escapeIdentifier('EscapedTableName'); +$pdo->exec("CREATE TABLE $escapedTableName ()"); + +$statement = $pdo->query( + "SELECT relname FROM pg_stat_user_tables WHERE relname ilike '%tablename'" +); + +var_export($statement->fetchAll(PDO::FETCH_COLUMN, 0)); + +$tableNameWithSymbols = 'Table-Name-With-Symbols'; +$pdo->exec("CREATE TABLE $tableNameWithSymbols ()"); +?> +]]> + + &example.outputs.similar; + + 'unescapedtablename', + 1 => 'EscapedTableName', +) +Fatal error: Uncaught PDOException: SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "Table" +LINE 1: CREATE TABLE Table-Name-With-Symbols () +]]> + + + + + + &reftitle.seealso; + + PDO::quote + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/getnotify.xml b/reference/pdo_pgsql/PDO/pgsql/getnotify.xml new file mode 100644 index 00000000000..b39d87780b1 --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/getnotify.xml @@ -0,0 +1,133 @@ + + + + + + + Pdo\Pgsql::getNotify + 非同期に通知を取得する + + + + &reftitle.description; + + public arrayfalsePdo\Pgsql::getNotify + intfetchModePDO::FETCH_DEFAULT + inttimeoutMilliseconds0 + + + 保留中の非同期な通知を示す結果セットを返します。 + + + + + &reftitle.parameters; + + + fetchMode + + + 結果セットを返すフォーマット。 + 次のいずれかの定数: + + PDO::FETCH_DEFAULT + PDO::FETCH_BOTH + PDO::FETCH_ASSOC + PDO::FETCH_NUM + + + + + + timeoutMilliseconds + + + レスポンスを待つ時間の長さ。ミリ秒で指定します。 + + + + + + + + &reftitle.returnvalues; + + ひとつ以上の通知が保留中だった場合、 + messagepid のフィールドを含む1行を返します。 + そうでなければ &false; を返します。 + + + + + &reftitle.errors; + + fetchMode が有効な + PDO::FETCH_* + 定数のいずれでもない場合、ValueError がスローされます。 + + + timeoutMilliseconds0 未満の場合、 + ValueError がスローされます。 + + + timeoutMilliseconds が符号付き32ビットの整数に + 収まらない場合、E_WARNING が発生し、 + その値は符号付き32ビットの整数の最大値に丸められます。 + + + + + + + &reftitle.seealso; + + PDO::query + PDOStatement::fetch + PDOStatement::fetchAll + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/getpid.xml b/reference/pdo_pgsql/PDO/pgsql/getpid.xml new file mode 100644 index 00000000000..7762cc4e36f --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/getpid.xml @@ -0,0 +1,55 @@ + + + + + + + Pdo\Pgsql::getPid + 接続を処理するバックエンドプロセスのPIDを取得する + + + + &reftitle.description; + + public intPdo\Pgsql::getPid + + + + この接続を処理するバックエンドプロセスのPIDを返します。 + このPIDはローカルホストではなく、データベースサーバーが稼働するホスト上のプロセスを示す点に + 注意してください。 + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + サーバーのPIDを int として返します。 + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/lobcreate.xml b/reference/pdo_pgsql/PDO/pgsql/lobcreate.xml new file mode 100644 index 00000000000..7dfa7ff3d5a --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/lobcreate.xml @@ -0,0 +1,120 @@ + + + + + + + Pdo\Pgsql::lobCreate + 新しいラージオブジェクトを作成する + + + + &reftitle.description; + + public stringfalsePdo\Pgsql::lobCreate + + + + Pdo\Pgsql::lobCreate は、 + ラージオブジェクトを作成してその OID を返します。 + このオブジェクトに対するデータの読み書きは、 + Pdo\Pgsql::lobOpen を使用します。 + + + OID は OID 型のカラムに格納され、 + ラージオブジェクトを参照するために使用されます。 + これにより、行のサイズがどんどん拡大してしまうことを防ぎます。 + ラージオブジェクトは Pdo\Pgsql::lobUnlink を + コールして削除するまで、データベースに残り続けます。 + + + ラージオブジェクトの取り扱いは複雑です。 + オブジェクトの OID を参照している行をデータベースから削除する際には、 + 必ず事前に PDO::pgsqlLOBUnlinkをコールしなければなりません。 + そうしないと、どこからも参照されないラージオブジェクトが、サーバに残り続けてしまうでしょう。 + さらに、ラージオブジェクトにはアクセス権を設定できません。 + 代替として、bytea 型のカラムも検討ください。最近のバージョンの PostgreSQL では + bytea 型のカラムに最大 1GBまで保存でき、行サイズを最適化したうえでデータを透過的に扱うことができます。 + + + + この関数を含むラージオブジェクトへの全ての操作は + トランザクション内で行わなければなりません。 + + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 成功した場合、新しく作成されたラージオブジェクトの OID、 + &return.falseforfailure;。 + + + + + &reftitle.examples; + + <methodname>Pdo\Pgsql::lobCreate</methodname> の例 + + この例では、新しいラージオブジェクトを作成し、 + ファイルの内容をそこにコピーします。その後、 + OID がテーブルに保存されます。 + + +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +$db->beginTransaction(); +$oid = $db->lobCreate(); +$stream = $db->lobOpen($oid, 'w'); +$local = fopen($filename, 'rb'); +stream_copy_to_stream($local, $stream); +$local = null; +$stream = null; +$stmt = $db->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)"); +$stmt->execute([$some_id, $oid]); +$db->commit(); +?> +]]> + + + + + + &reftitle.seealso; + + Pdo\Pgsql::lobOpen + Pdo\Pgsql::lobUnlink + pg_lo_create + pg_lo_open + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/lobopen.xml b/reference/pdo_pgsql/PDO/pgsql/lobopen.xml new file mode 100644 index 00000000000..765e5499b1f --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/lobopen.xml @@ -0,0 +1,126 @@ + + + + + + + Pdo\Pgsql::lobOpen + 既存のラージオブジェクトのストリームをオープンする + + + + &reftitle.description; + + public resourcefalsePdo\Pgsql::lobOpen + stringoid + stringmode"rb" + + + Pdo\Pgsql::lobOpen は、oid + が指すデータにアクセスするためのストリームをオープンします。 + freadfwrite および + fgets などの通常のファイルシステム関数を使用して、 + ストリームの内容を操作することができます。 + + + + + + + + &reftitle.parameters; + + + oid + + + ラージオブジェクトの ID。 + + + + + mode + + + モードが r の場合、読み込み用のストリームをオープンします。 + モードが w の場合、書き込み用のストリームをオープンします。 + + + + + + + + &reftitle.returnvalues; + + 成功した場合にストリームリソース、&return.falseforfailure;。 + + + + + &reftitle.errors; + + 何らかの問題が発生した場合、E_* レベルのエラー + または Exception をスローします。 + + + + + &reftitle.examples; + + <methodname>Pdo\Pgsql::lobOpen</methodname> の例 + + Pdo\Pgsql::lobCreate の例に続き、 + このコードはデータベースからラージオブジェクトを取得し + ブラウザに出力します。 + + +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +$db->beginTransaction(); +$stmt = $db->prepare("SELECT oid FROM BLOBS WHERE ident = ?"); +$stmt->execute(array($some_id)); +$stmt->bindColumn('oid', $oid, PDO::PARAM_STR); +$stmt->fetch(PDO::FETCH_BOUND); +$stream = $db->pgsqlLOBOpen($oid, 'r'); +header("Content-type: application/octet-stream"); +fpassthru($stream); +?> +]]> + + + + + + &reftitle.seealso; + + Pdo\Pgsql::lobCreate + Pdo\Pgsql::lobUnlink + pg_lo_create + pg_lo_open + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/lobunlink.xml b/reference/pdo_pgsql/PDO/pgsql/lobunlink.xml new file mode 100644 index 00000000000..75dac805529 --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/lobunlink.xml @@ -0,0 +1,102 @@ + + + + + + + Pdo\Pgsql::lobUnlink + ラージオブジェクトを削除する + + + + &reftitle.description; + + public boolPdo\Pgsql::lobUnlink + stringoid + + + OID が指すラージオブジェクトをデータベースから削除します。 + + + + + + + + &reftitle.parameters; + + + oid + + + ラージオブジェクトの ID。 + + + + + + + + &reftitle.returnvalues; + + &return.success; + + + + + &reftitle.examples; + + <methodname>Pdo\Pgsql::lobUnlink</methodname> の例 + + Pdo\Pgsql::lobCreate および + Pdo\Pgsql::lobOpen の例で使用した blob + テーブルからラージオブジェクトを参照している行を削除する前に、 + この例ではラージオブジェクトをデータベースから削除します。 + + +setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); +$db->beginTransaction(); +$db->pgsqlLOBUnlink($oid); +$stmt = $db->prepare("DELETE FROM BLOBS where ident = ?"); +$stmt->execute(array($some_id)); +$db->commit(); +?> +]]> + + + + + + &reftitle.seealso; + + Pdo\Pgsql::lobCreate + Pdo\Pgsql::lobOpen + pg_lo_create + pg_lo_open + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsql/setnoticecallback.xml b/reference/pdo_pgsql/PDO/pgsql/setnoticecallback.xml new file mode 100644 index 00000000000..52b03fd650b --- /dev/null +++ b/reference/pdo_pgsql/PDO/pgsql/setnoticecallback.xml @@ -0,0 +1,113 @@ + + + + + + + Pdo\Pgsql::setNoticeCallback + バックエンドが生成する通知および警告メッセージを処理するコールバックを設定する + + + + &reftitle.description; + + public voidPdo\Pgsql::setNoticeCallback + callablenullcallback + + + バックエンドが生成する通知および警告メッセージを処理するためのコールバックを設定します。 + これには、PostgreSQL 本体が出力するメッセージや、 + ユーザー定義 SQL 関数で RAISE されたメッセージも含まれます。 + これらのメッセージを実際に受信できるかは、バックエンド側の設定 + client_min_messages に依存する点に注意してください。 + + + + + &reftitle.parameters; + + + callback + + + &null; を渡すと、ハンドラはデフォルトの状態にリセットされます。 + + + それ以外の場合、ハンドラは次のシグネチャを持つコールバック関数です: + + voidhandler + stringmessage + + + + message + + + バックエンドが生成したメッセージ + + + + + + + + + + + + &reftitle.returnvalues; + + &return.void; + + + + + &reftitle.examples; + + <methodname>Pdo\Pgsql::setNoticeCallback</methodname> の例 + +exec('CREATE TABLE parent(id int primary key)'); +$pdo->exec('CREATE TABLE child(id int references parent)'); + +$pdo->setNoticeCallback(function ($message) { + echo $message; +}); + +$pdo->exec('TRUNCATE parent CASCADE'); +?> +]]> + + &example.outputs.similar; + + + + + + + + diff --git a/reference/pdo_pgsql/PDO/pgsqlCopyFromArray.xml b/reference/pdo_pgsql/PDO/pgsqlCopyFromArray.xml index c55ebc98396..3855808ab62 100644 --- a/reference/pdo_pgsql/PDO/pgsqlCopyFromArray.xml +++ b/reference/pdo_pgsql/PDO/pgsqlCopyFromArray.xml @@ -1,84 +1,28 @@ - + PDO::pgsqlCopyFromArray - PHP の配列から、データをテーブルにコピーする + + Pdo\Pgsql::copyFromArray &Alias; + &reftitle.description; - public bool PDO::pgsqlCopyFromArray - stringtable_name + public boolPDO::pgsqlCopyFromArray + stringtableName arrayrows - stringdelimiter"\t" - stringnull_as"\\\\N" - stringfields + stringseparator"\t" + stringnullAs"\\\\N" + stringnullfields&null; - - rows 配列からデータをテーブル table_name にコピーします。 - その際、delimiter をフィールドのデリミタ、そして fields のリストを使います。 - - - - - &reftitle.parameters; - - - - table_name - - - テーブル名を含む文字列 - - - - - rows - - - delimiter で区切られたフィールドの文字列の配列 - - - - - delimiter - - - rows 配列で使われているデリミタ - - - - - null_as - - - どのように null 値を扱うかを指定します - - - - - fields - - - 挿入するフィールドの一覧 - - - - - - - - - &reftitle.returnvalues; - - 成功したら &true; を返します。 - &return.falseforfailure; - + + &info.method.alias; Pdo\Pgsql::copyFromArray. + - - + PDO::pgsqlCopyFromFile - ファイルからデータをテーブルにコピーする + + Pdo\Pgsql::copyFromFile &Alias; + &reftitle.description; - public bool PDO::pgsqlCopyFromFile - stringtable_name + public boolPDO::pgsqlCopyFromFile + stringtableName stringfilename - stringdelimiter"\t" - stringnull_as"\\\\N" - stringfields + stringseparator"\t" + stringnullAs"\\\\N" + stringnullfields&null; - - filename で指定されたファイルからデータをテーブル table_name にコピーします。 - その際、delimiter をフィールドのデリミタ、そして fields のリストを使います。 - - - - - &reftitle.parameters; - - - - table_name - - - テーブル名を含む文字列 - - - - - filename - - - インポートするデータを含むファイル名 - - - - - delimiter - - - filename で指定されたファイルで使われているデリミタ - - - - - null_as - - - どのように null 値を扱うかを指定します - - - - - fields - - - 挿入するフィールドの一覧 - - - - - - - - - &reftitle.returnvalues; - - 成功したら &true; を返します。 - &return.falseforfailure; - + + &info.method.alias; Pdo\Pgsql::copyFromFile. + - - + PDO::pgsqlCopyToArray - データベーステーブルからのデータをPHPの配列にコピーする + + &Alias; Pdo\Pgsql::copyToArray + &reftitle.description; - public arrayfalse PDO::pgsqlCopyToArray - stringtable_name - stringdelimiter"\t" - stringnull_as"\\\\N" - stringfields + public arrayfalsePDO::pgsqlCopyToArray + stringtableName + stringseparator"\t" + stringnullAs"\\\\N" + stringnullfields&null; - - table からのデータを配列にコピーします。 - その際、delimiter をフィールドのデリミタ、そして fields のリストを使います。 - - - - - &reftitle.parameters; - - - - table_name - - - テーブル名を含む文字列 - - - - - delimiter - - - 列で使われるデリミタ - - - - - null_as - - - どのように null 値を扱うかを指定します - - - - - fields - - - エクスポートするフィールドの一覧 - - - - - - - - - &reftitle.returnvalues; - - 行の配列を返します。 - &return.falseforfailure; - + + &info.method.alias; Pdo\Pgsql::copyToArray. + - - + PDO::pgsqlCopyToFile - テーブルからのデータをファイルにコピーする + + &Alias; Pdo\Pgsql::copyToFile + &reftitle.description; - public bool PDO::pgsqlCopyToFile - stringtable_name + public boolPDO::pgsqlCopyToFile + stringtableName stringfilename - stringdelimiter"\t" - stringnull_as"\\\\N" - stringfields + stringseparator"\t" + stringnullAs"\\\\N" + stringnullfields&null; - - filename で指定されたファイルに、テーブルからデータをコピーします。 - その際、delimiter をフィールドのデリミタ、そして fields のリストを使います。 - - - - - &reftitle.parameters; - - - - table_name - - - テーブル名を含む文字列 - - - - - filename - - - エキスポートするファイル名 - - - - - delimiter - - - filename で指定されたファイルで使われているデリミタ - - - - - null_as - - - どのように null 値を扱うかを指定します - - - - - fields - - - 挿入するフィールドの一覧 - - - - - - - - - &reftitle.returnvalues; - - 成功したら &true; を返します。 - &return.falseforfailure; - + + &info.method.alias; Pdo\Pgsql::copyToFile. + - - + PDO::pgsqlGetNotify - 非同期に通知を取得する + + Pdo\Pgsql::getNotify &Alias; + &reftitle.description; public arrayfalsePDO::pgsqlGetNotify - intresult_typePDO::FETCH_USE_DEFAULT - intms_timeout0 + intfetchModePDO::FETCH_DEFAULT + inttimeoutMilliseconds0 - - 保留中の非同期な通知を示す結果セットを返します。 - - - - - &reftitle.parameters; - - - - result_type - - - 結果セットを返すフォーマット。 - PDO::FETCH_* 定数で表現します。 - - - - - ms_timeout - - - レスポンスを待つ時間の長さ。ミリ秒で指定します。 - - - - - - - - - &reftitle.returnvalues; - - ひとつ以上の通知が保留中だった場合、 - messagepid のフィールドが入った一行を返します。 - そうでなければ &false; を返します。 - + + &info.method.alias; Pdo\Pgsql::getNotify. + - - + PDO::pgsqlGetPid - サーバーのPIDを取得する + + &Alias; Pdo\Pgsql::getPid + &reftitle.description; @@ -12,24 +14,11 @@ public intPDO::pgsqlGetPid - - サーバーのPIDを返します。 - - - - - &reftitle.parameters; - &no.function.parameters; - - - - &reftitle.returnvalues; - - サーバーのPIDを返します。 - + + &info.method.alias; Pdo\Pgsql::getPid. + - - + PDO::pgsqlLOBCreate - 新しいラージオブジェクトを作成する + + Pdo\Pgsql::lobCreate &Alias; + &reftitle.description; @@ -12,93 +14,11 @@ public stringPDO::pgsqlLOBCreate - - PDO::pgsqlLOBCreate は、 - ラージオブジェクトを作成してその OID を返します。 - このオブジェクトに対するデータの読み書きを行う際には、 - PDO::pgsqlLOBOpen を使用してストリームをオープンします。 - OID は OID 型のカラムに格納され、ラージオブジェクトを参照するために使用されます。 - これにより、行のサイズがどんどん拡大してしまうことを防ぎます。 - PDO::pgsqlLOBUnlink をコールして削除するまで、 - ラージオブジェクトはデータベース内に残り続けます。 - - - ラージオブジェクトの大きさは最大 2GB まで拡大できますが、扱い方はめんどうです。 - オブジェクトの OID を参照している行をデータベースから削除する際には、 - 必ず事前に PDO::pgsqlLOBUnlink - がコールされていなければなりません。 - さらに、ラージオブジェクトにはアクセス権の設定がありません。 - ラージオブジェクトの代替策として、bytea 型のカラムも検討ください。 - 最近のバージョンの PostgreSQL では bytea 型のカラムに最大 1GB - まで保存でき、行サイズを最適化したうえでデータを透過的に扱うことができます。 - - - - この関数は、トランザクション内でコールしなければなりません。 - - + + &info.method.alias; Pdo\Pgsql::lobCreate. + - - &reftitle.parameters; - - PDO::pgsqlLOBCreate は、パラメータを受け取りません。 - - - - - &reftitle.returnvalues; - - 新しく作成されたラージオブジェクトの OID、あるいは失敗した場合に - &false; を返します。 - - - - - &reftitle.examples; - - - <function>PDO::pgsqlLOBCreate</function> の例 - - この例では、新しいラージオブジェクトを作成し、 - ファイルの内容をそこにコピーします。その後、OID がテーブルに保存されます。 - - -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$db->beginTransaction(); -$oid = $db->pgsqlLOBCreate(); -$stream = $db->pgsqlLOBOpen($oid, 'w'); -$local = fopen($filename, 'rb'); -stream_copy_to_stream($local, $stream); -$local = null; -$stream = null; -$stmt = $db->prepare("INSERT INTO BLOBS (ident, oid) VALUES (?, ?)"); -$stmt->execute(array($some_id, $oid)); -$db->commit(); -?> -]]> - - - - - - - - &reftitle.seealso; - - - PDO::pgsqlLOBOpen - PDO::pgsqlLOBUnlink - pg_lo_create - - - - - - - + PDO::pgsqlLOBOpen - 既存のラージオブジェクトのストリームをオープンする + + Pdo\Pgsql::lobOpen &Alias; + &reftitle.description; @@ -13,100 +15,11 @@ stringoid stringmode"rb" - - PDO::pgsqlLOBOpen は、oid - が指すデータにアクセスするためのストリームをオープンします。 - moder の場合、 - ストリームは読み込み用にオープンされます。 - modew の場合、 - ストリームは書き込み用にオープンされます。 - freadfwrite および - fgets のような通常のファイルシステム関数を使用して、 - ストリームの内容を操作することができます。 - - - - この関数およびラージオブジェクトに対するすべての操作は、 - トランザクション内で処理される必要があります。 - - + + &info.method.alias; Pdo\Pgsql::lobOpen. + - - &reftitle.parameters; - - - - oid - - - ラージオブジェクトの ID。 - - - - - mode - - - モードが r の場合、読み込み用のストリームをオープンします。 - モードが w の場合、書き込み用のストリームをオープンします。 - - - - - - - - &reftitle.returnvalues; - - 成功した場合にストリームリソース、&return.falseforfailure;。 - - - - - &reftitle.examples; - - - <function>PDO::pgsqlLOBOpen</function> の例 - - PDO::pgsqlLOBCreate の例に引き続き、 - このコード片はデータベースからラージオブジェクトを取得して - それをブラウザに出力します。 - - -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$db->beginTransaction(); -$stmt = $db->prepare("select oid from BLOBS where ident = ?"); -$stmt->execute(array($some_id)); -$stmt->bindColumn('oid', $oid, PDO::PARAM_STR); -$stmt->fetch(PDO::FETCH_BOUND); -$stream = $db->pgsqlLOBOpen($oid, 'r'); -header("Content-type: application/octet-stream"); -fpassthru($stream); -?> -]]> - - - - - - - - &reftitle.seealso; - - - PDO::pgsqlLOBCreate - PDO::pgsqlLOBUnlink - pg_lo_open - - - - - - - + PDO::pgsqlLOBUnlink - ラージオブジェクトを削除する + + Pdo\Pgsql::lobUnlink &Alias; + &reftitle.description; @@ -12,79 +14,11 @@ public boolPDO::pgsqlLOBUnlink stringoid - - OID が指すラージオブジェクトをデータベースから削除します。 - - - - この関数は、トランザクション内でコールしなければなりません。 - - - + + &info.method.alias; Pdo\Pgsql::lobUnlink. + - - &reftitle.parameters; - - - - oid - - - ラージオブジェクトの ID。 - - - - - - - - &reftitle.returnvalues; - - &return.success; - - - - - &reftitle.examples; - - - <function>PDO::pgsqlLOBUnlink</function> の例 - - PDO::pgsqlLOBCreate および - PDO::pgsqlLOBOpen の例で使用した blob - テーブルからラージオブジェクトを参照している行を削除する前に、 - この例ではラージオブジェクトをデータベースから削除します。 - - -setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); -$db->beginTransaction(); -$db->pgsqlLOBUnlink($oid); -$stmt = $db->prepare("DELETE FROM BLOBS where ident = ?"); -$stmt->execute(array($some_id)); -$db->commit(); -?> -]]> - - - - - - - &reftitle.seealso; - - - PDO::pgsqlLOBOpen - PDO::pgsqlLOBCreate - - - - - - - -
+ +
&reftitle.constants; &pdo.driver-constants; - PDO::PGSQL_ATTR_DISABLE_PREPARES (int) - - SQL文とパラメータを一緒に、一回のコールでサーバーに送信します。 - これによって、名前付きのプリペアドステートメントを別々に作ることを避けられます。 - SQL文が一度しか実行されない場合、 - 不要なサーバーとの通信を避けられるので、レイテンシを抑えることができます。 - + + Pdo\Pgsql::ATTR_DISABLE_PREPARES &Alias; + - - - - PDO::PGSQL_ATTR_RESULT_MEMORY_SIZE - (int) - - - - 指定されたクエリ結果 PDOStatement - インスタンスに割り当てられたメモリ使用量をバイト単位で返します。 - クエリ実行前で結果が存在しない場合は &null; を返します。 - PHP 8.4.0 から利用可能です。 - - - -
- + + + + Pdo\Pgsql クラス + Pdo\Pgsql + + + + +
+ &reftitle.intro; + + PostgreSQL PDO ドライバによる接続を示す PDO サブクラスです。 + + + このドライバは PostgreSQL 方言向けに専用の SQL クエリパーサーをサポートしています。 + 次のものを処理可能です: + + + + シングルクオートやダブルクオートで囲まれたリテラルでのクオートの二重化によるエスケープ + + + + + C 言語形式の「エスケープ」文字列リテラル + + + + + ドル記号で囲まれた文字列リテラル + + + + + 2 つのハイフンによるコメント、ネストされていない C 言語形式のコメント + + + + + ? 演算子のエスケープシーケンスとしての + ?? のサポート + + + + +
+ + +
+ &reftitle.classsynopsis; + + + + + Pdo\Pgsql + + + + extends + PDO + + + &InheritedConstants; + + + + + &Constants; + + public + const + int + Pdo\Pgsql::ATTR_DISABLE_PREPARES + + + public + const + int + Pdo\Pgsql::ATTR_RESULT_MEMORY_SIZE + + + public + const + int + Pdo\Pgsql::TRANSACTION_IDLE + + + public + const + int + Pdo\Pgsql::TRANSACTION_ACTIVE + + + public + const + int + Pdo\Pgsql::TRANSACTION_INTRANS + + + public + const + int + Pdo\Pgsql::TRANSACTION_INERROR + + + public + const + int + Pdo\Pgsql::TRANSACTION_UNKNOWN + + + &Methods; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.constants; + + + Pdo\Pgsql::ATTR_DISABLE_PREPARES + + + SQL文とパラメータを一緒に、一回のコールでサーバーに送信します。 + これによって、名前付きのプリペアドステートメントを別々に作ることを避けられます。 + SQL文が一度しか実行されない場合、 + 不要なサーバーとの通信を避けられるので、レイテンシを抑えることができます。 + + + + + Pdo\Pgsql::ATTR_RESULT_MEMORY_SIZE + + + 指定されたクエリ結果 PDOStatement + インスタンスに割り当てられたメモリ使用量をバイト単位で返します。 + クエリ実行前で結果が存在しない場合は &null; を返します。 + + + + + Pdo\Pgsql::TRANSACTION_IDLE + + + + + + + Pdo\Pgsql::TRANSACTION_ACTIVE + + + + + + + Pdo\Pgsql::TRANSACTION_INTRANS + + + + + + + Pdo\Pgsql::TRANSACTION_INERROR + + + + + + + Pdo\Pgsql::TRANSACTION_UNKNOWN + + + + + + +
+
+ + &reference.pdo-pgsql.pdo.entities.pgsql; + +
+ diff --git a/reference/pdo_pgsql/reference.xml b/reference/pdo_pgsql/reference.xml index 9ca39c22782..8e0b45cd598 100644 --- a/reference/pdo_pgsql/reference.xml +++ b/reference/pdo_pgsql/reference.xml @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ PostgreSQL (PDO) -
+
&reftitle.intro; PDO_PGSQL は、PHP から PostgreSQL @@ -18,7 +18,7 @@
-
+
&reftitle.resources; この拡張モジュールでは、ストリームリソースを定義しています。これは @@ -29,7 +29,7 @@ &reference.pdo-pgsql.configure; &reference.pdo-pgsql.constants; -
+
General notes @@ -157,7 +157,7 @@ pgsql:host=/tmp;port=5432;dbname=testdb;user=bruce;password=mypass &reference.pdo-pgsql.entities.PDO; - + &reference.pdo-pgsql.pdo-pgsql; + + + + + Pdo\Sqlite::createAggregate + + SQL 文で使用するユーザー定義集約関数を登録する + + + + + &reftitle.description; + + public boolPdo\Sqlite::createAggregate + stringname + callablestep + callablefinalize + intnumArgs-1 + + + このメソッドは Pdo\Sqlite::createFunction + と似ていますが、クエリのすべての行を集約する関数を登録する点が + 異なります。 + + + この関数と + Pdo\Sqlite::createFunction + の最大の違いは、集約関数の登録には 2 つの関数が必要であるということです。 + + + + このメソッドを使用してネイティブ SQL 関数を上書きすることができます。 + + + + + + &reftitle.parameters; + + + name + + + SQL 文で使用する関数の名前。 + + + + + step + + + 結果セットの各行を処理するコールバック関数。 + この関数は、結果を蓄積して集約コンテキストに保存しなければなりません。 + + + 定義は次のとおりです: + + mixedstep + mixedcontext + intrownumber + mixedvalue + mixedvalues + + + + context + + + 最初の行では &null; + 2行目以降では、この関数が前回返した値です。 + この値で集約の状態を管理します。 + + + + + rownumber + + + 現在の行番号 + + + + + value + + + 集約関数に渡されるはじめの引数 + + + + + values + + + 集約関数に渡されるふたつめ以降の引数 + + + + + この関数の戻り値を、次の関数呼び出し、または + ファイナライズ関数のcontext 引数として + 使います。 + + + + + finalize + + + すべての行が処理された後で呼び出されるコールバック関数。 + ここでは、集約コンテキストからデータを取得して結果を返します。 + この関数が返す値は、SQLite が理解できる形式 (すなわち + スカラー型) + でなければなりません。 + + + 定義は次のとおりです: + + mixedfini + mixedcontext + introwcount + + + + context + + + ステップ関数の最後の戻り値 + + + + + rowcount + + + ステップ関数が処理した行数 + + + + + この関数の戻り値が、 + 集約関数全体の戻り値となります。 + + + + + numArgs + + + コールバック関数があらかじめ定義済みの引数を受け取る場合に、 + SQLite のパーサに渡すヒント。 + + + + + + + + &reftitle.returnvalues; + + &return.success; + + + + + &reftitle.examples; + + <methodname>Pdo\Sqlite::createAggregate</methodname> example + + この例では、SQLクエリの中で使用できる + max_length という名前のユーザー定義集約関数を作成しています。 + + + この例では、max_length という集約関数を + 作成しています。この関数はテーブルの特定のカラム内で + 最も長い文字列の長さを計算します。 + 各行に対し max_len_step 関数が呼ばれ、 + その際に $context パラメータが渡されます。 + この context パラメータには、他の PHP 変数と同様 + arrayobject などを格納できます。 + この例では、これまでの中で最大の文字列長を格納するために利用しています。 + もし $string が現在の最大値よりも長ければ、 + context に格納した最大長を新たな値で更新します。 + + + 全ての行が処理された後、 + SQLite は集約関数の結果を計算するため max_len_finalize + 関数を呼び出します。 + $context 内のデータに基づいて何らかの計算を行うことも可能です。 + この例では、結果はクエリの進行中に計算されているため、 + context の値をそのまま返すことができます。 + + +exec("CREATE TABLE strings(a)"); +$insert = $db->prepare('INSERT INTO strings VALUES (?)'); +foreach ($data as $str) { + $insert->execute(array($str)); +} +$insert = null; + +function max_len_step($context, $row_number, $string) +{ + if (strlen($string) > $context) { + $context = strlen($string); + } + return $context; +} + +function max_len_finalize($context, $row_count) +{ + return $context === null ? 0 : $context; +} + +$db->createAggregate('max_len', 'max_len_step', 'max_len_finalize'); + +var_dump($db->query('SELECT max_len(a) from strings')->fetchAll()); + +?> +]]> + + + + + 結果の値を context に蓄積し、最後に一括で処理する方法は推奨 + 「しません」。これは、SQLite のメモリ消費量が大きくなるからです。 + 仮に 32 バイトの長さのデータが百万件あったとして、 + それを蓄積しておくのにどれだけのメモリが必要になるか + 考えてみましょう。 + + + + + + + &reftitle.seealso; + + Pdo\Sqlite::createFunction + Pdo\Sqlite::createCollation + sqlite_create_function + sqlite_create_aggregate + + + + + diff --git a/reference/pdo_sqlite/PDO/sqlite/createcollation.xml b/reference/pdo_sqlite/PDO/sqlite/createcollation.xml new file mode 100644 index 00000000000..5933b25e3f0 --- /dev/null +++ b/reference/pdo_sqlite/PDO/sqlite/createcollation.xml @@ -0,0 +1,137 @@ + + + + + + + Pdo\Sqlite::createCollation + + SQL文で文字列比較関数として使うユーザー定義関数を登録する + + + + + &reftitle.description; + + public boolPdo\Sqlite::createCollation + stringname + callablecallback + + + このメソッドは Pdo\Sqlite::createFunction + と似ていますが、文字列比較関数を登録する点が異なります。 + + + + + &reftitle.parameters; + + + name + + + 作成または再定義する文字列比較 SQL 関数の名前 + + + + + callback + + + 文字列比較の動作を定義するコールバック関数です。 + この関数は2つのstringを受け取り、 + 1番目の文字列が2番目の文字列より前に並ぶ場合 -1、 + 同じ並び順の場合 0、 + 後に並ぶ場合 1 を返さなければなりません。 + これに似た振る舞いをする組み込み関数として、strcmp が挙げられます。 + + + This function need to be defined as: + + intcollation + stringstring1 + stringstring2 + + + + + + + + + &reftitle.returnvalues; + + &return.success; + + + + + &reftitle.examples; + + <methodname>Pdo\Sqlite::createCollation</methodname> の例 + +exec("CREATE TABLE test (col1 string)"); +$db->exec("INSERT INTO test VALUES ('a1')"); +$db->exec("INSERT INTO test VALUES ('a10')"); +$db->exec("INSERT INTO test VALUES ('a2')"); + +$db->sqliteCreateCollation('NATURAL_CMP', 'strnatcmp'); +foreach ($db->query("SELECT col1 FROM test ORDER BY col1") as $row) { + echo $row['col1'] . "\n"; +} +echo "\n"; +foreach ($db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP") as $row) { + echo $row['col1'] . "\n"; +} +?> +]]> + + &example.outputs; + + + + + + + + &reftitle.seealso; + + Pdo\Sqlite::createFunction + Pdo\Sqlite::createAggregate + sqlite_create_function + sqlite_create_aggregate + + + + + diff --git a/reference/pdo_sqlite/PDO/sqlite/createfunction.xml b/reference/pdo_sqlite/PDO/sqlite/createfunction.xml new file mode 100644 index 00000000000..8fcb32ffa66 --- /dev/null +++ b/reference/pdo_sqlite/PDO/sqlite/createfunction.xml @@ -0,0 +1,187 @@ + + + + + + + Pdo\Sqlite::createFunction + + SQL 文で使用するユーザー定義関数を登録する + + + + + &reftitle.description; + + public boolPdo\Sqlite::createFunction + stringfunction_name + callablecallback + intnum_args-1 + intflags0 + + + PHP 関数を、ユーザー定義関数として SQLite に登録します。 + 登録した関数は、SQL 文の中で使用することが可能です。 + ユーザー定義関数は、関数をコールできるあらゆる SQL 文 + (SELECTUPDATE 、トリガなど) から呼び出せます。 + + + + このメソッドを使用してネイティブ SQL 関数を上書きすることができます。 + + + + + + &reftitle.parameters; + + + function_name + + + SQL 文で使用する関数の名前。 + + + + + callback + + + 定義した SQL 関数を処理するコールバック関数。 + + + + この関数が返す値は、SQLite が理解できる形式 (すなわち + スカラー型) + でなければなりません。 + + + + コールバック関数の定義は次のとおりです: + + mixedcallback + mixedvalue + mixedvalues + + + + value + + + SQL関数に渡す最初の引数 + + + + + values + + + SQL関数に渡す2つ目以降の引数 + + + + + + + + + num_args + + + SQL 関数がとる引数の数。 + このパラメータが -1 の場合、 + SQL 関数は任意の数の引数を取ることができます。 + + + + + flags + + + ビット単位のフラグの組み合わせ。 + 現在は、PDO::SQLITE_DETERMINISTIC だけがサポートされています。 + これは、単一のSQLステートメント内では、 + 同じ入力に対して常に同じ結果を返すことを指定します。 + + + + + + + + &reftitle.returnvalues; + + &return.success; + + + + + &reftitle.examples; + + <methodname>Pdo\Sqlite::createFunction</methodname> の例 + + この例では、文字列の SHA256 ハッシュを計算し + それを反転する関数を使っています。SQL 文を実行すると、 + この関数によって変換されたファイル名が + $rows に格納され返ります。 + + + この手法の素晴らしい点は、クエリの後に + &foreach; ループを用いて結果を処理する必要がないことです。 + + +sqliteCreateFunction('sha256rev', 'sha256_and_reverse', 1); +$rows = $db->query('SELECT sha256rev(filename) FROM files')->fetchAll(); +?> +]]> + + + + + + + &reftitle.seealso; + + Pdo\Sqlite::createAggregate + Pdo\Sqlite::createCollation + sqlite_create_function + sqlite_create_aggregate + + + + + diff --git a/reference/pdo_sqlite/PDO/sqliteCreateAggregate.xml b/reference/pdo_sqlite/PDO/sqliteCreateAggregate.xml index 676aa92a3bf..843fb0d56ae 100644 --- a/reference/pdo_sqlite/PDO/sqliteCreateAggregate.xml +++ b/reference/pdo_sqlite/PDO/sqliteCreateAggregate.xml @@ -1,12 +1,12 @@ - + PDO::sqliteCreateAggregate - SQL 文で使用する集約ユーザー定義関数 (UDF) を登録する + Pdo\Sqlite::createAggregate &Alias; @@ -14,250 +14,16 @@ &reftitle.description; public boolPDO::sqliteCreateAggregate - stringfunction_name - callablestep_func - callablefinalize_func - intnum_args + stringname + callablestep + callablefinalize + intnumArgs-1 - &warn.experimental.func; - - このメソッドは - と似ていますが、 - この関数で登録した関数は、クエリのすべての行の内容を集約する関数を登録します。 - - - この関数と の最大の違いは、 - 集約関数を作成するためには 2 つの関数が必要であるということです。 - + + &info.method.alias; Pdo\Sqlite::createAggregate. + - - - &reftitle.parameters; - - - - function_name - - - SQL 文で使用する関数の名前。 - - - - - step_func - - - 結果セットの各行についてコールされるコールバック関数。 - この PHP 関数は、結果を蓄積して集約コンテキストに保存しなければなりません。 - - - この関数は次のように定義しなければなりません。 - - mixedstep - mixedcontext - intrownumber - mixedvalue - mixedvalues - - - - context - - - 最初の行では &null; - 二行目以降では、ステップ関数から以前返された値を持ちます。 - この値を、集約の状態を管理するのに使うべきです。 - - - - - rownumber - - - 現在の行番号 - - - - - value - - - 集約関数に渡されるはじめの引数 - - - - - values - - - 集約関数に渡されるふたつめ以降の引数 - - - - - この関数の戻り値を、次のステップあるいはファイナライズ関数の - context 引数として使います。 - - - - - finalize_func - - - すべての行が処理された後でコールされるコールバック関数。 - ここでは、集約コンテキストからデータを取得して結果を返します。 - コールバック関数の返す値は、SQLite が理解できる形式 (すなわち - スカラー型) - でなければなりません。 - - - この関数は次のように定義しなければなりません。 - - mixedfini - mixedcontext - introwcount - - - - context - - - ステップ関数を最後に呼んだ時の戻り値を保持します。 - - - - - rowcount - - - 集約関数が実行された行数を保持します。 - - - - - この関数の戻り値が、集約の戻り値となります。 - - - - - num_args - - - コールバック関数があらかじめ定義済みの引数を受け取る場合に、 - SQLite のパーサに渡すヒント。 - - - - - - - - - &reftitle.returnvalues; - - &return.success; - - - - - &reftitle.examples; - - - 集約関数 max_length の例 - -exec("CREATE TABLE strings(a)"); -$insert = $db->prepare('INSERT INTO strings VALUES (?)'); -foreach ($data as $str) { - $insert->execute(array($str)); -} -$insert = null; - -function max_len_step($context, $rownumber, $string) -{ - if (strlen($string) > $context) { - $context = strlen($string); - } - return $context; -} - -function max_len_finalize($context, $rownumber) -{ - return $context === null ? 0 : $context; -} - -$db->sqliteCreateAggregate('max_len', 'max_len_step', 'max_len_finalize'); - -var_dump($db->query('SELECT max_len(a) from strings')->fetchAll()); - -?> -]]> - - - - - この例では、 - テーブルのカラムの中で一番長い文字列の長さを計算する集約関数を作成します。 - 各行について max_len_step 関数がコールされ、 - $context パラメータが渡されます。 - このパラメータには、他の PHP 変数と同様に、配列やオブジェクトが設定されます。 - この例では、これまでに登場した値のうち長さが最大のものの長さを保持しています。 - $string が現在の最大値より長い場合に、 - その値で現在の最大値を更新します。 - - - すべての行に対する処理が終わると、SQLite は - max_len_finalize 関数をコールして集約結果を決定します。 - ここでは、$context の内容に基づいた、 - なんらかの計算を行うことができます。 - しかし、この例ではクエリを処理している過程で既に結果が決定しているので、 - ここでは単に context の値を返しているだけです。 - - - - 結果の値を context に溜め込んでおき、最後に一括して処理するという方法は推奨 - 「しません」。これは、SQLite のメモリ消費量が大きくなるからです。 - 仮に 32 バイトの長さのデータが百万件あったとして、 - それを溜め込むためにどれだけのメモリが必要になるか考えてみましょう。 - - - - - および - を使用して、 - SQLite のネイティブ SQL 関数を上書きすることができます。 - - - - - - - &reftitle.seealso; - - - - sqlite_create_function - sqlite_create_aggregate - - - - - - + PDO::sqliteCreateCollation - SQL文で collate 関数として使うユーザー定義関数を登録する + Pdo\Sqlite::createCollation &Alias; @@ -16,95 +16,11 @@ stringname callablecallback - &warn.experimental.func; - - - - &reftitle.parameters; - - - - name - - - 作成または再定義する SQL collate 関数の名前 - - - - - callback - - - collation の振る舞いを定義する、PHP関数または、 - コールバックとして適用するユーザー定義関数。 - 2つの値を受けとり、strcmp - 関数が返すのと同じ値を返します。つまり、 - はじめの文字列が前の文字列より前にソートされる場合に-1、 - 後にソートされる場合に1、等しい場合に0を返します。 - - - この関数は、次のように定義する必要があります: - - intcollation - stringstring1 - stringstring2 - - - - - - - - - - &reftitle.returnvalues; - - &return.success; - - - - - &reftitle.examples; - - - <function>PDO::sqliteCreateCollation</function> の例 - -exec("CREATE TABLE test (col1 string)"); -$db->exec("INSERT INTO test VALUES ('a1')"); -$db->exec("INSERT INTO test VALUES ('a10')"); -$db->exec("INSERT INTO test VALUES ('a2')"); - -$db->sqliteCreateCollation('NATURAL_CMP', 'strnatcmp'); -foreach ($db->query("SELECT col1 FROM test ORDER BY col1") as $row) { - echo $row['col1'] . "\n"; -} -echo "\n"; -foreach ($db->query("SELECT col1 FROM test ORDER BY col1 COLLATE NATURAL_CMP") as $row) { - echo $row['col1'] . "\n"; -} -?> -]]> - - &example.outputs; - - - - - + + &info.method.alias; Pdo\Sqlite::createCollation. + - - + PDO::sqliteCreateFunction - SQL 文で使用するユーザー定義関数 (UDF) を登録する + Pdo\Sqlite::createFunction &Alias; @@ -19,102 +19,9 @@ intnum_args-1 intflags0 - &warn.experimental.func; - - - このメソッドを使用すると、 - PHP の関数を、UDF (User Defined Function: - ユーザー定義関数) として SQLite に登録できるようになります。 - 登録した関数は、SQL 文の中で使用することが可能です。 - - - UDF は、関数をコールできるあらゆる SQL 文 - (SELECT および UPDATE 文、そしてトリガなど) で使用することが可能です。 - - - - - &reftitle.parameters; - - - - function_name - - - SQL 文で使用する関数の名前。 - - - - - callback - - - 定義した SQL 関数を処理するコールバック関数。 - - - - コールバック関数の返す値は、SQLite が理解できる形式 (すなわち - スカラー型) - でなければなりません。 - - - - コールバック関数は、以下のように定義する必要があります: - - mixedcallback - mixedvalue - mixedvalues - - - - value - - - SQL関数に渡す最初の引数 - - - - - values - - - SQL関数に渡す2つ目以降の引数 - - - - - - - - - num_args - - - SQL 関数がとる引数の数。 - このパラメータが -1 の場合、 - SQL 関数は任意の数の引数を取ることができます。 - - - - - flags - - - ビット単位のフラグの組み合わせ。 - 現状は、PDO::SQLITE_DETERMINISTIC だけがサポートされています。 - これは、単一のSQLステートメント内では、同じ入力に対して常に同じ結果を返すことを指定します。 - - - - - - - - - &reftitle.returnvalues; - - &return.success; - + + &info.method.alias; Pdo\Sqlite::createFunction. + @@ -138,84 +45,7 @@ - - - &reftitle.examples; - - - <function>PDO::sqliteCreateFunction</function> の例 - -sqliteCreateFunction('md5rev', 'md5_and_reverse', 1); -$rows = $db->query('SELECT md5rev(filename) FROM files')->fetchAll(); -?> -]]> - - - - - この例では、文字列の md5 を計算してそれを反転させる関数を定義しています。 - SQL 文が実行されると、filename をこの関数で変換した値が返されます。 - $rows に返されるデータの中に、処理結果が含まれます。 - - - この方法を使用すると、データを取得した後に &foreach; - で結果をひとつひとつ処理していく必要がなくなり、美しいコードが記述できます。 - - - - - および - を使用して、 - SQLite のネイティブ SQL 関数を上書きすることができます。 - - - - - - &reftitle.seealso; - - - - sqlite_create_function - sqlite_create_aggregate - - - - - + + + + Pdo\Sqlite クラス + Pdo\Sqlite + + + + +
+ &reftitle.intro; + + SQLite PDO ドライバによる接続を示す PDO サブクラスです。 + + + このドライバは SQLite 方言向けに専用の SQL クエリパーサーをサポートしています。 + 次のものを処理可能です: + + + + シングルクオート、ダブルクオート、バッククオートで囲まれたリテラルでのクオートの二重化によるエスケープ + + + + + 識別子の角括弧によるクオート + + + + + 2 つのハイフンによるコメント、ネストされていない C 言語形式のコメント + + + + +
+ + +
+ &reftitle.classsynopsis; + + + + + Pdo\Sqlite + + + + extends + PDO + + + &InheritedConstants; + + + + + &Constants; + + public + const + int + Pdo\Sqlite::DETERMINISTIC + + + public + const + int + Pdo\Sqlite::OPEN_READONLY + + + public + const + int + Pdo\Sqlite::OPEN_READWRITE + + + public + const + int + Pdo\Sqlite::OPEN_CREATE + + + public + const + int + Pdo\Sqlite::ATTR_OPEN_FLAGS + + + public + const + int + Pdo\Sqlite::ATTR_READONLY_STATEMENT + + + public + const + int + Pdo\Sqlite::ATTR_EXTENDED_RESULT_CODES + + + &Methods; + + + + + &InheritedMethods; + + + + + + + + + +
+ +
+ &reftitle.constants; + + + Pdo\Sqlite::DETERMINISTIC + + + + + + + Pdo\Sqlite::OPEN_READONLY + + + + + + + Pdo\Sqlite::OPEN_READWRITE + + + + + + + Pdo\Sqlite::OPEN_CREATE + + + + + + + Pdo\Sqlite::ATTR_OPEN_FLAGS + + + + + + + Pdo\Sqlite::ATTR_READONLY_STATEMENT + + + + + + + Pdo\Sqlite::ATTR_EXTENDED_RESULT_CODES + + + + + + +
+
+ + &reference.pdo-sqlite.pdo.entities.sqlite; + +
+ diff --git a/reference/pdo_sqlite/reference.xml b/reference/pdo_sqlite/reference.xml index 0d5686002cc..d52fb6dbe42 100644 --- a/reference/pdo_sqlite/reference.xml +++ b/reference/pdo_sqlite/reference.xml @@ -1,6 +1,6 @@ - + @@ -9,7 +9,7 @@ SQLite (PDO) -
+
&reftitle.intro; PDO_SQLITE は、PHP から SQLite 2 や SQLite 3 @@ -94,6 +94,7 @@ sqlite: &reference.pdo-sqlite.entities.PDO; + &reference.pdo-sqlite.pdo-sqlite;