From bc2c66b3b8668c0a4feb609cb19bd97bf69db3bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A6=E7=94=B0=20=E6=86=B2=E5=A4=AA=E9=83=8E?= Date: Sun, 4 Oct 2026 15:55:18 +0900 Subject: [PATCH] =?UTF-8?q?pdo=20/=20pdo=5Fdblib=20/=20pdo=5Fmysql=20?= =?UTF-8?q?=E3=82=92=E5=8E=9F=E6=96=87=E3=81=AE=E5=A4=89=E6=9B=B4=E3=81=AB?= =?UTF-8?q?=E8=BF=BD=E5=BE=93=20(5=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pdo・pdo_dblib・pdo_mysql の 5 ファイルを原文の変更に追従しました。これで pdo・pdo_dblib・pdo_mysql モジュールの未訳・要更新はなくなります。 原文では次の変更がありました。 - `PDOStatement::fetch()` のページが書き直されました(php/doc-en@d312fb6、php/doc-en#5022) - PHP 8.4.0 で `bool` になったと書かれていた定数の型が `int` に戻され、型が変わったのは定数ではなく `PDO::getAttribute()` が返す値であることが、`PDO::getAttribute()` の changelog に追記されました(php/doc-en@00b1185) ## 対象ファイル reference/pdo/ (3) — constants.xml, pdo/getattribute.xml, pdostatement/fetch.xml reference/pdo_dblib/ (1) — pdo-dblib.xml reference/pdo_mysql/ (1) — constants.xml --- reference/pdo/constants.xml | 14 +- reference/pdo/pdo/getattribute.xml | 13 +- reference/pdo/pdostatement/fetch.xml | 399 +++++++++++++++------------ reference/pdo_dblib/pdo-dblib.xml | 12 +- reference/pdo_mysql/constants.xml | 8 +- 5 files changed, 241 insertions(+), 205 deletions(-) diff --git a/reference/pdo/constants.xml b/reference/pdo/constants.xml index d3f2fd66f8..0194c296d5 100644 --- a/reference/pdo/constants.xml +++ b/reference/pdo/constants.xml @@ -1,6 +1,6 @@ - + &reftitle.constants; @@ -230,17 +230,13 @@ PDO::ATTR_AUTOCOMMIT - (bool) + (int) この値が &false; の場合、PDO は接続がトランザクションを開始できるように オートコミットを無効にしようとします。 - - PHP 8.4.0 以降、この定数は bool として型付けされています。 - それ以前は、int として型付けされていました。 - @@ -508,7 +504,7 @@ PDO::ATTR_EMULATE_PREPARES - (bool) + (int) @@ -518,10 +514,6 @@ PDO は常にプリペアドステートメントをエミュレートします。&false; が設定された場合、 ドライバのネイティブなプリペアドステートメントを使用します。 - - PHP 8.4.0 以降、この定数は bool として型付けされています。 - それ以前は、int として型付けされていました。 - diff --git a/reference/pdo/pdo/getattribute.xml b/reference/pdo/pdo/getattribute.xml index e91fb7afc5..3a2dbba615 100644 --- a/reference/pdo/pdo/getattribute.xml +++ b/reference/pdo/pdo/getattribute.xml @@ -1,6 +1,6 @@ - + @@ -99,6 +99,17 @@ 取得できるようになりました。 + + 8.4.0 + + MySQL ドライバと Firebird ドライバは PDO::ATTR_AUTOCOMMIT + 属性の値を、それに加えて MySQL ドライバは + PDO::ATTR_EMULATE_PREPARES と + PDO::MYSQL_ATTR_DIRECT_QUERY 属性の値も、 + bool で返すようになりました。 + これより前のバージョンでは、int で返していました。 + + diff --git a/reference/pdo/pdostatement/fetch.xml b/reference/pdo/pdostatement/fetch.xml index 3cc9ac3fb9..24362cdbee 100644 --- a/reference/pdo/pdostatement/fetch.xml +++ b/reference/pdo/pdostatement/fetch.xml @@ -1,6 +1,6 @@ - + @@ -18,142 +18,166 @@ intcursorOffset0 - - PDOStatementオブジェクトに関連付けられた結果セットから1行取得します。 + + PDOStatement インスタンスに関連付けられた結果セットから1行取得します。 mode パラメータは、PDO がその行をどの様に返すかを決定します。 - + &reftitle.parameters; - - - - mode - - - 次のレコードを呼び出し元に返す方法を制御します。 - この値は、PDO::FETCH_* 定数のどれかで、 - デフォルトは PDO::ATTR_DEFAULT_FETCH_MODE の値 - (そのデフォルトは PDO::FETCH_BOTH) です。 - - + + + mode + + + 次のレコードを呼び出し元に返す方法を制御します。 + この値は、PDO::FETCH_* 定数のどれかで、 + デフォルトは PDO::ATTR_DEFAULT_FETCH_MODE の値 + (そのデフォルトは PDO::FETCH_BOTH) です。 + + + PDO::FETCH_ASSOC: は、結果セットに 返された際のカラム名で添字を付けた配列を返します。 - - - PDO::FETCH_BOTH (デフォルト): + + + + + PDO::FETCH_NAMED: + PDO::FETCH_ASSOC と同じ形式の配列を返します。 + ただし、同じ名前のカラムが複数あった場合は、そのキーが指す値は、 + 同じ名前のカラムのすべての値を含む配列になります。 + + + + + PDO::FETCH_NUM: + 結果セットに返された際の 0 + から始まるカラム番号を添字とする配列を返します。 + + + + + PDO::FETCH_BOTH: 結果セットに返された際のカラム名と 0 で始まるカラム番号で添字を付けた配列を返します。 - - + これは実質的に、PDO::FETCH_NUM と + PDO::FETCH_ASSOC を組み合わせたものです。 + + + + PDO::FETCH_BOUND: &true; を返し、結果セットのカラムの値を PDOStatement::bindColumn メソッドでバインドされた PHP 変数に代入します。 - - + + + + + PDO::FETCH_OBJ: + 結果セットに返された際のカラム名と同名のプロパティを有する + stdClass のインスタンスを返します。 + + + + PDO::FETCH_CLASS: 要求されたクラスの新規インスタンスを返します。 - 結果セットのカラムをクラスのプロパティにマップしつつ、 + PDOStatement::setFetchMode + でクラスを設定していない場合、このモードは + PDO::FETCH_CLASSTYPE と組み合わせる必要があります。 + 組み合わせた場合、インスタンス化するクラスは最初のカラムの値で決まります。 + + + デフォルトでは、結果セットのカラムをクラスのプロパティにマップしつつ、 オブジェクトは初期化されます。 - この処理はコンストラクタをコールする前に行われるので、 + この処理はコンストラクタをコールする前に行われるので、 プロパティのアクセス権に関係なく、たとえ readonly - としてマークされていてもプロパティの値を集めることができます。 + としてマークされていてもプロパティに値を設定できます。 + ただし、コンストラクタ自身がプロパティを初期化しない場合に限ります。 + クラスにプロパティが存在しない場合は、マジックメソッド - __set + __set() が存在すればコールされます。 マジックメソッドが存在しない場合、public プロパティが動的に作成されます。 - しかしながら、PDO::FETCH_PROPS_LATE - が指定されている場合は、プロパティの値を集める - 前 にコンストラクタがコールされます。 - mode に PDO::FETCH_CLASSTYPE が - 含まれている場合 (例: PDO::FETCH_CLASS | - PDO::FETCH_CLASSTYPE) は、最初のカラムの値から - クラス名を決定します。 - - + + + PDO::FETCH_PROPS_LATE フラグを使うとこの動作を変更でき、 + プロパティに値を設定する前にコンストラクタがコールされるようになります。 + + + + PDO::FETCH_PROPS_LATE を使うかどうかに関係なく、 + カラムの値はコンストラクタの引数として渡されません。 + 渡されるのは、PDOStatement::setFetchMode + で指定した引数だけです。 + + + + + PDO::FETCH_INTO: 結果セットのカラムがクラス内の名前付けされたプロパティに マッピングされている要求された既存インスタンスを更新します。 - - + + + + PDO::FETCH_LAZY: PDO::FETCH_BOTH とPDO::FETCH_OBJの 組合せで、アクセスされるオブジェクトプロパティ名を作成する PDORow オブジェクトを返します。 - - - PDO::FETCH_NAMED: - PDO::FETCH_ASSOC と同じ形式の配列を返します。 - ただし、同じ名前のカラムが複数あった場合は、そのキーが指す値は、 - 同じ名前のカラムのすべての値を含む配列になります。 - - - PDO::FETCH_NUM: - 結果セットに返された際の 0 - から始まるカラム番号を添字とする配列を返します。 - - - PDO::FETCH_OBJ: - 結果セットに返された際のカラム名と同名のプロパティを有する - 匿名のオブジェクトを返します。 - - - PDO::FETCH_PROPS_LATE: - PDO::FETCH_CLASS とともに使用すると、 - まずクラスのコンストラクタを呼び出してから、カラムの値をプロパティに代入します。 - - - - - - - cursorOrientation - - - スクロール可能なカーソルを表す PDOStatement オブジェクトの場合、 - この値により呼び出し側に返される行を定義します。 - この値は、PDO::FETCH_ORI_* 定数のどれかと - する必要があり、 - PDO::FETCH_ORI_NEXT がデフォルトとなっています。 - PDOStatement に対してスクロール可能なカーソルを要求するためには、 - PDO::prepare を用いて SQL ステートメントを - 準備する際、 - PDO::ATTR_CURSOR 属性に - PDO::CURSOR_SCROLL を設定する必要があります。 - - - - - cursorOffset - - - スクロール可能なカーソルを表すPDOStatementオブジェクトの場合で、 - cursorOrientation パラメータが - PDO::FETCH_ORI_ABSに設定された場合、この値により - 取得される結果セットの行の絶対位置が指定されます。 - - - スクロール可能なカーソルを表すPDOStatementオブジェクトの場合で、 - cursorOrientation パラメータが - PDO::FETCH_ORI_RELに設定された場合、この値は、 - PDOStatement::fetch がコールされる前のカーソルの - 位置を基準として取得する行の位置を指定します。 - - - - - + + + + + + + + cursorOrientation + + + スクロール可能なカーソルを表す PDOStatement オブジェクトの場合、 + この値により呼び出し側に返される行を定義します。 + この値は、PDO::FETCH_ORI_* 定数のどれかと + する必要があり、 + PDO::FETCH_ORI_NEXT がデフォルトとなっています。 + PDOStatement に対してスクロール可能なカーソルを要求するためには、 + PDO::prepare を用いて SQL ステートメントを + 準備する際、 + PDO::ATTR_CURSOR 属性に + PDO::CURSOR_SCROLL を設定する必要があります。 + + + + + cursorOffset + + + cursorOrientation 引数の値が + PDO::FETCH_ORI_ABS の場合、この値は、 + 取得する行の結果セット内での絶対位置を指定します。 + + + cursorOrientation 引数の値が + PDO::FETCH_ORI_REL の場合、この値は、 + PDOStatement::fetch がコールされる前のカーソルの + 位置を基準として取得する行の位置を指定します。 + + + + &reftitle.returnvalues; - + この関数が成功した場合の戻り値は、取得形式によって異なります。 失敗した場合、または行が残っていない場合は、常に &false; を返します。 - + @@ -163,74 +187,95 @@ &reftitle.examples; - - 異なる取得方法で行を取得する - + + 異なる取得方法で行を取得する + prepare("SELECT name, colour FROM fruit"); +$db = new PDO('sqlite::memory:'); +$db->exec("CREATE TABLE fruit (name VARCHAR(100), colour VARCHAR(100))"); +$db->exec("INSERT INTO fruit (name, colour) VALUES + ('apple', 'red'), + ('banana', 'yellow'), + ('orange', 'orange'), + ('kiwi', 'green')"); +$sth = $db->prepare("SELECT name, colour FROM fruit"); $sth->execute(); /* Exercise PDOStatement::fetch styles */ -print "PDO::FETCH_ASSOC: "; -print "Return next row as an array indexed by column name\n"; +echo "PDO::FETCH_ASSOC: "; +echo "Return next row as an array indexed by column name\n"; $result = $sth->fetch(PDO::FETCH_ASSOC); -print_r($result); -print "\n"; +var_dump($result); +echo "\n"; -print "PDO::FETCH_BOTH: "; -print "Return next row as an array indexed by both column name and number\n"; +echo "PDO::FETCH_BOTH: "; +echo "Return next row as an array indexed by both column name and number\n"; $result = $sth->fetch(PDO::FETCH_BOTH); -print_r($result); -print "\n"; +var_dump($result); +echo "\n"; -print "PDO::FETCH_LAZY: "; -print "Return next row as a PDORow object with column names as properties\n"; +echo "PDO::FETCH_LAZY: "; +echo "Return next row as a PDORow object with column names as properties\n"; $result = $sth->fetch(PDO::FETCH_LAZY); -print_r($result); -print "\n"; +var_dump($result); +echo "\n"; -print "PDO::FETCH_OBJ: "; -print "Return next row as an anonymous object with column names as properties\n"; +echo "PDO::FETCH_OBJ: "; +echo "Return next row as an stdClass object with column names as properties\n"; $result = $sth->fetch(PDO::FETCH_OBJ); -print $result->name; -print "\n"; +var_dump($result); +echo "\n"; ?> ]]> - - &example.outputs; - + + &example.outputs; + apple - [colour] => red -) +array(2) { + ["name"]=> + string(5) "apple" + ["colour"]=> + string(3) "red" +} PDO::FETCH_BOTH: Return next row as an array indexed by both column name and number -Array -( - [name] => banana - [0] => banana - [colour] => yellow - [1] => yellow -) +array(4) { + ["name"]=> + string(6) "banana" + [0]=> + string(6) "banana" + ["colour"]=> + string(6) "yellow" + [1]=> + string(6) "yellow" +} PDO::FETCH_LAZY: Return next row as a PDORow object with column names as properties -PDORow Object -( - [name] => orange - [colour] => orange -) +object(PDORow)#3 (3) { + ["queryString"]=> + string(30) "SELECT name, colour FROM fruit" + ["name"]=> + string(6) "orange" + ["colour"]=> + string(6) "orange" +} + +PDO::FETCH_OBJ: Return next row as an stdClass object with column names as properties +object(stdClass)#4 (2) { + ["name"]=> + string(4) "kiwi" + ["colour"]=> + string(5) "green" +} -PDO::FETCH_OBJ: Return next row as an anonymous object with column names as properties -kiwi ]]> - - - スクロール可能なカーソルで行を取得する - + + + + スクロール可能なカーソルで行を取得する + ]]> - - &example.outputs; - + + &example.outputs; + - - + + - 構築の順序 - - PDO::FETCH_CLASS でオブジェクトを取得するときには、 - まずオブジェクトのプロパティへの代入を終えてから、そのクラスのコンストラクタを実行します。 - PDO::FETCH_PROPS_LATE を指定した場合はこの順序が逆転します。 - つまり、まずコンストラクタを呼び出してから、プロパティへの代入を行います。 - - + + 構築の順序 + + PDO::FETCH_CLASS でオブジェクトを取得するときには、 + まずオブジェクトのプロパティへの代入を終えてから、そのクラスのコンストラクタを実行します。 + PDO::FETCH_PROPS_LATE を指定した場合はこの順序が逆転します。 + つまり、まずコンストラクタを呼び出してから、プロパティへの代入を行います。 + + fetch(); $person->tell(); ?> ]]> - - &example.outputs.similar; - + + &example.outputs.similar; + - - - + + &reftitle.seealso; - - - PDO::prepare - PDOStatement::execute - PDOStatement::fetchAll - PDOStatement::fetchColumn - PDOStatement::fetchObject - PDOStatement::setFetchMode - - + + PDO::prepare + PDOStatement::execute + PDOStatement::fetchAll + PDOStatement::fetchColumn + PDOStatement::fetchObject + PDOStatement::setFetchMode + - + Pdo\Dblib クラス @@ -52,7 +52,7 @@ public const - bool + int Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER @@ -76,7 +76,7 @@ public const - bool + int Pdo\Dblib::ATTR_DATETIME_CONVERT @@ -110,8 +110,6 @@ Pdo\Dblib::ATTR_STRINGIFY_UNIQUEIDENTIFIER - PHP 8.4.0 以降、この定数は bool として型付けされています。 - それ以前は、int として型付けされていました。 @@ -148,10 +146,6 @@ フォーマットあるいはロケールのフォーマットを使って文字列に変換します。 デフォルトでは、この属性は &false; です。 - - PHP 8.4.0 以降、この定数は bool として型付けされています。 - それ以前は、int として型付けされていました。 - diff --git a/reference/pdo_mysql/constants.xml b/reference/pdo_mysql/constants.xml index 5a8786d170..56b199e186 100644 --- a/reference/pdo_mysql/constants.xml +++ b/reference/pdo_mysql/constants.xml @@ -1,6 +1,6 @@ - +
&reftitle.constants; @@ -93,16 +93,12 @@ PDO::MYSQL_ATTR_DIRECT_QUERY - (bool) + (int) PDO::ATTR_EMULATE_PREPARES &Alias; - - PHP 8.4.0 以降、この定数は bool として型付けされています。 - それ以前は、int として型付けされていました。 -