WPDB Prepared Delete

时间:2014-10-13 作者:ILikeTurtles

我正在尝试从数据库中删除一行。我正在使用来自用户的输入,我需要能够使用准备好的语句进行清理。

查询本身看起来像-

DELETE FROM wp_thing_assignment WHERE (account_number,user) values (1, \'DudeDev\')
我正在使用以下代码-

    $success = $this->wpdb->query($this->wpdb->prepare(
        "DELETE FROM $this->table_name WHERE
            (account_number,user)
            values (%d, %s)",
            array ( $this->company[$i], $this->employee)
    ));
我得到这个错误-

您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行使用“values(1,\'USER\')”附近的正确语法

有没有办法挽救此查询?

2 个回复
最合适的回答,由SO网友:Rarst 整理而成

我认为您刚刚混淆了语法和插入:)根据手册DELETE syntax is:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
    [PARTITION (partition_name,...)]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
VALUES.

您应该考虑使用$wpdb->delete() helper.

SO网友:ILikeTurtles

更新-(已解决)我的查询现在如下所示-

    // Using where formatting.
    $success = $this->wpdb->delete( $this->table_name,
                    array( \'account_number\' => $this->company[$i], \'user\' => $this->employee ),
                    array( \'%d\',\'%s\' ) );
这非常有效。

结束