Skip to content

ext/pdo: Throw a ValueError from bindColumn() for an unknown column - #23835

Open
iliaal wants to merge 1 commit into
php:masterfrom
iliaal:pdo-bindcolumn-valueerror
Open

iliaal wants to merge 1 commit into
php:masterfrom
iliaal:pdo-bindcolumn-valueerror

Conversation

@iliaal

@iliaal iliaal commented Sep 22, 2026

Copy link
Copy Markdown
Member

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_ERRMODE and 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.

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
@NickSdot

Copy link
Copy Markdown
Contributor

Is no longer having the wrong column name in the message a downgrade?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants