Skip to content

DB::delete() does not support comparison operators other than = and does so without warning #24

@defunctl

Description

@defunctl

DB::delete() uses wpdb::delete() under the hood, which only supports the = comparison operator.

This can cause some seriously unexpected results, because the SQL is silently converted and doesn't warn the developer that they aren't executing their expected query.

Ideally, we would no longer use wpdb::delete() under the hood and instead build our own DELETE SQL. Temporary solutions could be some doc updates and finding a way to throw an exception if a developer tries to do this.


Delete query with comparison operator other than =:

DB::table( 'posts' )->where( 'ID', 100, '>' )->delete();

The expected SQL for the above query:

DELETE FROM wp_posts
WHERE `ID` > 100

The actual SQL for the above query:

DELETE FROM wp_posts
WHERE `ID` = 100

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions