[DOC-CVS] [doc-en] master: ext/pdo: PHP 8.4 changes across PDO, PDO_PGSQL and PDO_Firebird (#5703)

[email protected] (Louis-Arnaud via GitHub) Mon, 3 Aug 2026 10:42:27 +0000
Newsgroups php.doc.cvs
Message-ID <[email protected]>
Author: Louis-Arnaud (lacatoire)
Committer: GitHub (web-flow)
Pusher: jordikroon
Date: 2026-08-03T12:42:24+02:00

Commit: https://github.com/php/doc-en/commit/371e92c3d8d9ee92542dfae4dee1d9fd0c940385
Raw diff: https://github.com/php/doc-en/commit/371e92c3d8d9ee92542dfae4dee1d9fd0c940385.diff

ext/pdo: PHP 8.4 changes across PDO, PDO_PGSQL and PDO_Firebird (#5703)

Co-authored-by: Kamil Tekiela <[email protected]>

Changed paths:
  M  reference/pdo/pdo/getattribute.xml
  M  reference/pdo/pdo/prepare.xml
  M  reference/pdo/pdostatement/getattribute.xml
  M  reference/pdo_firebird/configure.xml
  M  reference/pdo_pgsql/configure.xml
  M  reference/pdo_pgsql/pdo-pgsql.xml
  M  reference/pdo_pgsql/reference.xml


Diff:

diff --git a/reference/pdo/pdo/getattribute.xml b/reference/pdo/pdo/getattribute.xml
index eebbc93d3ae2..02acc2a65c38 100644
--- a/reference/pdo/pdo/getattribute.xml
+++ b/reference/pdo/pdo/getattribute.xml
@@ -38,18 +38,14 @@
        One of the <literal>PDO::ATTR_*</literal> constants. The generic attributes that
        apply to database connections are as follows:
        <simplelist> 
-        <member><literal>PDO::ATTR_AUTOCOMMIT</literal></member>
         <member><literal>PDO::ATTR_CASE</literal></member>
-        <member><literal>PDO::ATTR_CLIENT_VERSION</literal></member>
-        <member><literal>PDO::ATTR_CONNECTION_STATUS</literal></member>
+        <member><literal>PDO::ATTR_DEFAULT_FETCH_MODE</literal></member>
         <member><literal>PDO::ATTR_DRIVER_NAME</literal></member>
         <member><literal>PDO::ATTR_ERRMODE</literal></member>
         <member><literal>PDO::ATTR_ORACLE_NULLS</literal></member>
         <member><literal>PDO::ATTR_PERSISTENT</literal></member>
-        <member><literal>PDO::ATTR_PREFETCH</literal></member>
-        <member><literal>PDO::ATTR_SERVER_INFO</literal></member>
-        <member><literal>PDO::ATTR_SERVER_VERSION</literal></member>
-        <member><literal>PDO::ATTR_TIMEOUT</literal></member>
+        <member><literal>PDO::ATTR_STATEMENT_CLASS</literal></member>
+        <member><literal>PDO::ATTR_STRINGIFY_FETCHES</literal></member>
        </simplelist> 
       </para>
       <simpara>
diff --git a/reference/pdo/pdo/prepare.xml b/reference/pdo/pdo/prepare.xml
index 36d7b308a2c7..aadd5ff889e9 100644
--- a/reference/pdo/pdo/prepare.xml
+++ b/reference/pdo/pdo/prepare.xml
@@ -56,12 +56,12 @@
   </para>
   <note>
    <simpara>
-    The parser used for emulated prepared statements and for
-    rewriting named or question mark style parameters supports the non standard
-    backslash escapes for single- and double quotes. That means that terminating
-    quotes immediately preceded by a backslash are not recognized as such, which
-    may result in wrong detection of parameters causing the prepared statement to
-    fail when it is executed. A work-around is to not use emulated prepares for
+    Before PHP 8.4.0, the parser used for emulated prepared statements and for
+    rewriting named or question mark style parameters supported the non standard
+    backslash escapes for single- and double quotes. That meant that terminating
+    quotes immediately preceded by a backslash were not recognized as such, which
+    could result in wrong detection of parameters causing the prepared statement to
+    fail when it was executed. A work-around was to not use emulated prepares for
     such SQL queries, and to avoid rewriting of parameters by using a parameter style
     which is natively supported by the driver.
    </simpara>
@@ -71,6 +71,15 @@
     the <literal>??</literal> string will be translated to <literal>?</literal>
     when sending the query to the database.
   </para>
+  <simpara>
+   As of PHP 8.4.0, PDO uses driver-specific SQL parsers to locate parameter
+   markers, so that markers appearing inside string literals or comments are
+   not mistaken for placeholders. The default parser recognizes single- and
+   double-quoted string literals, as
+   well as two-dashes and non-nested C-style comments. Individual drivers may
+   provide a parser that recognizes additional or different syntax; refer to the
+   driver-specific documentation for details.
+  </simpara>
  </refsect1>
  <refsect1 role="parameters">
   &reftitle.parameters;
diff --git a/reference/pdo/pdostatement/getattribute.xml b/reference/pdo/pdostatement/getattribute.xml
index 7aec7c41e188..b875e6afbf20 100644
--- a/reference/pdo/pdostatement/getattribute.xml
+++ b/reference/pdo/pdostatement/getattribute.xml
@@ -24,6 +24,13 @@
       Get the name of the cursor for <literal>UPDATE ... WHERE CURRENT OF</literal>.
      </simpara>
     </listitem>
+    <listitem>
+     <simpara>
+      <constant>Pdo\Pgsql::ATTR_RESULT_MEMORY_SIZE</constant>
+      (PostgreSQL specific, available as of PHP 8.4.0):
+      Get the amount of memory, in bytes, allocated to the query result.
+     </simpara>
+    </listitem>
    </itemizedlist>
    Note that driver specific attributes <emphasis>must not</emphasis> be used
    with other drivers.
diff --git a/reference/pdo_firebird/configure.xml b/reference/pdo_firebird/configure.xml
index 6ef9611e5c25..653b14eeaf8a 100644
--- a/reference/pdo_firebird/configure.xml
+++ b/reference/pdo_firebird/configure.xml
@@ -12,6 +12,11 @@ $ ./configure --with-pdo-firebird
 ]]>
   </screen>
  </para>
+ <simpara>
+  As of PHP 8.4.0, this extension uses Firebird C++ APIs and therefore
+  requires a C++ compiler, and must be built against fbclient 3.0
+  or higher.
+ </simpara>
 </section>
 
 <!-- Keep this comment at the end of the file
diff --git a/reference/pdo_pgsql/configure.xml b/reference/pdo_pgsql/configure.xml
index b75737e09729..2871bfac93bc 100644
--- a/reference/pdo_pgsql/configure.xml
+++ b/reference/pdo_pgsql/configure.xml
@@ -12,6 +12,10 @@ $ ./configure --with-pdo-pgsql
 ]]>
   </screen>
  </para>
+ <simpara>
+  This extension requires libpq (the PostgreSQL C client library).
+  As of PHP 8.4.0, libpq 10.0 or later is required.
+ </simpara>
 </section>
 
 <!-- Keep this comment at the end of the file
diff --git a/reference/pdo_pgsql/pdo-pgsql.xml b/reference/pdo_pgsql/pdo-pgsql.xml
index aac12ca7f833..5888c54d7f76 100644
--- a/reference/pdo_pgsql/pdo-pgsql.xml
+++ b/reference/pdo_pgsql/pdo-pgsql.xml
@@ -44,6 +44,14 @@
      </listitem>
     </itemizedlist>
    </para>
+   <note>
+    <simpara>
+     Because this parser recognizes dollar-quoted string literals, question
+     marks inside them are not treated as parameter placeholders and do not
+     need to be escaped. As of PHP 8.4.0, escaping question marks as
+     <literal>??</literal> inside a dollar-quoted string is deprecated.
+    </simpara>
+   </note>
   </section>
   <!-- }}} -->
 
diff --git a/reference/pdo_pgsql/reference.xml b/reference/pdo_pgsql/reference.xml
index dfc8d58f81aa..7006801fe634 100644
--- a/reference/pdo_pgsql/reference.xml
+++ b/reference/pdo_pgsql/reference.xml
@@ -119,6 +119,15 @@
       </varlistentry>
 
      </variablelist>
+     <note>
+      <simpara>
+       As of PHP 8.4.0, credentials specified in the DSN
+       (<literal>user</literal> and <literal>password</literal>) take priority
+       over the corresponding arguments passed to the
+       <classname>PDO</classname> constructor. In earlier versions, the
+       PDO constructor arguments took precedence.
+      </simpara>
+     </note>
      <note>
       <simpara>
        All semicolons in the DSN string are replaced by spaces, because PostgreSQL