Conversation
A column name that is not in the result set is a programming error, so report it the way the method already reports an empty name or an index below one, rather than through PDO::ATTR_ERRMODE. The equivalent parameter failure in bindParam() and bindValue() stays an ERRMODE error: its site in rewrite_name_to_position() is only reachable once execute() has populated bound_param_map, never from the bind methods themselves. Closes phpGH-23835
iliaal
force-pushed
the
pdo-bindcolumn-valueerror
branch
from
September 22, 2026 02:14
6e43946 to
67cfe51
Compare
Contributor
|
Is no longer having the wrong column name in the message a downgrade? |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #23799, where kamil-tekiela asked for a ValueError here. A column name that is not in the result set is a programming error, so bindColumn() now throws instead of reporting through
PDO::ATTR_ERRMODEand returning false, matching how the same argument already rejects an empty name or an index below one.bindParam() and bindValue() keep their ERRMODE error. The equivalent site in rewrite_name_to_position() is reachable only after execute() has populated bound_param_map, so the bind methods never get there; instrumenting it across ext/pdo, ext/pdo_mysql and ext/pdo_sqlite showed every hit coming from execute(). Converting it would change execute(), which is a separate decision.