|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2019-04-12 22:27 UTC] v-yitam at microsoft dot com
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 17:00:01 2025 UTC |
Description: ------------ When an invalid column number is provided to PDOStatement::fetchColumn(), MySQL, PostgreSQL and SQLite drivers return NULL without triggering a warning. Unlike the above, the Oracle driver triggers a misleading warning: column %d data was too large for buffer and was truncated to fit it. Test script: --------------- $conn = new PDO('oci:dbname=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SID=XE)))', 'system', 'oracle'); // incorrect column, positional parameter $stmt = $conn->prepare('SELECT ? FROM DUAL'); $stmt->execute([1]); $value = $stmt->fetchColumn(1); var_dump($value); Expected result: ---------------- NULL Actual result: -------------- NULL Warning: PDOStatement::fetchColumn(): column 1 data was too large for buffer and was truncated to fit it in test.php on line 20 Call Stack: 0.0001 365728 1. {main}() test.php:0 0.0189 372584 2. PDOStatement->fetchColumn() test.php:20