Skip to content

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

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

Activity

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

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